【问题标题】:Django. form.errors is not visible in template although the form is bound姜戈。尽管表单已绑定,但 form.errors 在模板中不可见
【发布时间】: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})

据我所知,错误或其他属性应该可以直接在模板中访问。

我看不到错误在哪里! :)

【问题讨论】:

    标签: python django forms


    【解决方案1】:

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

    【讨论】:

    • 哇,真快,谢谢。现在那是失败的。我可以在 10 分钟内接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2015-03-31
    • 2021-10-18
    • 1970-01-01
    • 2016-08-13
    • 2012-02-09
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多