Python Django access表单错误,不包括模板中的非字段错误
在django模板中,我希望在表单顶部显示所有表单错误, 最简单的方法是:Python Django access表单错误,不包括模板中的非字段错误,python,django,forms,django-templates,Python,Django,Forms,Django Templates,在django模板中,我希望在表单顶部显示所有表单错误, 最简单的方法是: {{ form.errors }} 问题是,这还显示了表单.非字段\u错误,这些是表单.errors[''所有\uuuu']中包含的条目 我想分别显示这些特殊错误,因此我尝试在dict上循环并检查密钥是否存在: {% for err in form.errors %} {% if not err.__all__ %} {# print error #} {% endif %} {% endfor %}
{{ form.errors }}
问题是,这还显示了表单.非字段\u错误
,这些是表单.errors[''所有\uuuu']
中包含的条目
我想分别显示这些特殊错误,因此我尝试在dict上循环并检查密钥是否存在:
{% for err in form.errors %}
{% if not err.__all__ %}
{# print error #}
{% endif %}
{% endfor %}
但显然这是不可能的,因为在模板中,我们无法访问以下划线()开头的字典键
问题:是否有一种内置的方式来访问(并可能打印)标准字段错误和单独的非字段错误
解决方案
这是建立在Daniel Roseman的基础上的:
{%if form.errors%}
{%if form.non_字段_错误%}
{%表示表单中的错误。非\u字段\u错误%}
- {{error | escape}
{%endfor%}
{%endif%}
{%形式的字段为%}
{%if field.errors%}
- {{field.name}
{%字段中有错误。错误%}
- {{error | escape}
{%endfor%}
{%endif%}
{%endfor%}
{%endif%}
您可以在字段上循环并访问其错误:
{% for field in form %}
{% field.errors %}
{% endfor %}
{% for field in form %}
{% field.errors %}
{% endfor %}