【发布时间】:2014-03-15 19:05:38
【问题描述】:
我正在提交一个包含无效数据的表单:包含少于 5 个字符的字符串(请参阅 forms.py),我看到表单已绑定,我从视图中打印 form.errors 以查看实际错误,我将表单传递给模板,但模板中的 form.errors 为空!
views.py
def index(request):
if request.method == 'POST':
form = OptionForm(request.POST)
if form.is_valid():
print "VALID"
return HttpResponseRedirect(reverse('main:success'))
elif request.method == 'GET':
form = OptionForm()
print form.is_bound # --> True
print form.errors # --> errors, see below
return render(request, 'main/index.html', {'form': OptionForm})
打印的 form.errors 包含:
<ul class="errorlist"><li>opt<ul class="errorlist"><li>Ensure this value has at least 5 characters (it has 3).</li></ul></li></ul>
forms.py
class OptionForm(forms.Form):
opt = forms.CharField(min_length=5)
index.html
<!-- form errors -->
{{ form.errors }}
<form id="option-set" method="post">
{% csrf_token %}
{{ form.opt }}
<input type="submit" value="submit">
</form>
但是,如果我将 form.error 与表单对象一起传递,我将能够看到它们。
return render(request, 'main/index.html', {'form': OptionForm, 'errors': form.errors})
据我所知,错误或其他属性应该可以直接在模板中访问。
我看不到错误在哪里! :)
【问题讨论】: