使用FormView和ModelForm时如何在模板上获取non_field_errors

时间:2014-06-23 17:17:24

标签: django python-2.7 django-forms django-templates django-views

我使用FormView和ModelForm来处理注册表单。如果重复电子邮件,我提出ValidationError。但是此错误消息在注册模板上不可用作non_field_errors。

当我试图在RegistrationView中找到form_invalid方法中的form.errors时,它显示了预期的错误,但不知何故它没有传递给模板。

2 个答案:

答案 0 :(得分:1)

首先,我们必须确定它是否为non_field_error或字段错误。

您在已定义的ModelForm中提升ValidationError的位置?

  1. 如果它在表单的def clean()中被提升,那么它将出现在non_field_errors 中,并且可以通过模板中的form.non_field_errors进行访问

    < / LI>
  2. 如果它在def clean_<field_name>()中引发,则会出现字段错误,可以通过模板中的form.errorsform.<field_name>.error进行访问/ p>

  3. 请自行决定在哪里举起它。

    注意:ModelForm可以与FormView一起使用。但理想情况下,有

    的CreateView和UpdateView

答案 1 :(得分:0)

这样的东西?

{% if my_form.non_field_errors %}
    <div class="alert alert-error">
    <ul>
        {% for error in my_form.non_field_errors %}
            <li>{{ error }}</li>
        {% endfor %}
    </ul>
    </div>
{% endif %}