使用表单集时出现缩进错误
我有这些模型:
class Tour(models.Model):
Name=models.CharField(max_length=100)
Count=models.SmallIntegerField()
PriceUnitCode=models.ForeignKey(PriceUnit)
Price=models.CharField(max_length=12)
Description=models.TextField()
ActionDate=models.DateTimeField(auto_now=True,editable=False)
ActionUserCode=models.ForeignKey(User,editable=False)
StatusTypeCode=models.ForeignKey(StatusType)
class Images(models.Model):
Image = models.ImageField(upload_to="gallery")
Tour=models.ForeignKey(Tour)
我想设计一个表单,用来添加一个旅游项目和一组与这个旅游项目相关的图片,想把它们放在同一个表单里。
这是我的表单模型:
class TourForm(ModelForm):
class Meta:
model = Tour
我在views.py里这样做:
def myview(request,key):
GalleryFormSet = inlineformset_factory(Tour,Images)
if request.method == 'POST':
form = TourForm(request.POST, request.FILES)
if form.is_valid():
tour=form.save()
formset=GalleryFormSet(request.POST, request.FILES,instance=tour)
if formset.is_valid():
formset.save()
else:
form = TourForm()
formset=GalleryFormSet()
return render_to_response('airAgency/addtour.html', {'form': form,'formset':formset})
在我的模板里:
<form method='POST' enctype="multipart/form-data" dir="rtl">
{% csrf_token %}
{{ form.as_p }}
{{ formset.management_form }}
{% for form in formset %}
{{ form }}
{% endfor %}
<input type="submit" />
</form>
但是出现了这个错误:
unexpected indent (views.py, line 122)
第122行是这个:
if(form.is_valid()):
当然我改了很多次这个代码,但每次在第122行都会出错,而第122行的代码每次都不一样!!!到底是怎么回事呢?!!!谢谢大家的帮助。
4 个回答
1
这种错误最常见的原因是前面的方法缩进发生了变化,或者说是在实际错误报告的几行之前。最最常见的问题来源是从网上复制粘贴的内容,这些内容的缩进可能和你写的代码不一样,要么是用制表符,要么是用空格,或者缩进的多了少了。
你的编辑器应该会提醒你这些问题。例如,Komodo IDE会用箭头来指示缩进级别。所以,建议你把代码放到一个好一点的编辑器里,这样可以更容易找到问题。还有一个关于Python IDE的StackOverflow帖子。
3
也许你在那一行用了空格而不是制表符(或者反过来),我有时候也会遇到这种情况。
3
很可能,你的第122行的缩进有问题,最可能的原因是你在开头的空白字符上有看不见的差异。
举个例子:你有很多行代码在一个代码块里,都是用制表符(Tab)开头的,编辑器显示为……8个空格。其中有一行(第122行)开头用了一个空格和一个制表符,这在编辑器里也显示为……8个空格。你看不出有什么不同,但在Python里,这行的开头是不同的,这就是问题所在。
建议:把第122行开头的所有空白去掉,然后用编辑器的自动缩进功能来保持一致。或者把第122行的所有开头空白去掉,和其他行保持一样的开头。
要确认是不是这个问题,可以用ViM打开你的文件,然后输入 :set list
(显示所有字符)。这样,制表符会显示为 ^I
,而空格则会显示为一个空格字符。