Django的。尽管表单已绑定,但form.errors在模板中不可见

时间:2014-03-15 19:05:39

标签: python django forms

我正在提交一个包含无效数据的表单:包含少于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在哪里! :)

1 个答案:

答案 0 :(得分:2)

您正在将表单类OptionForm而不是实例化变量form传递给模板。