我正在提交一个包含无效数据的表单:包含少于5个字符的字符串(请参阅forms.py),我看到表单已绑定,我从视图中打印form.errors以查看实际错误,I将表单传递给模板,但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 salong,我将能够看到它们。
return render(request, 'main/index.html', {'form': OptionForm, 'errors': form.errors})
据我所知,错误或其他属性应该可以直接在模板中访问。
我看不出bug在哪里! :)
答案 0 :(得分:2)
您正在将表单类OptionForm而不是实例化变量form
传递给模板。