【发布时间】:2018-07-04 12:07:01
【问题描述】:
在 django 模板中,我想在表单顶部显示所有表单错误, 最简单的方法是这样做:
{{ form.errors }}
问题是这也显示了form.non_field_errors,这些是form.errors['__all__']中包含的条目。
我想单独显示这些特殊错误,所以我尝试循环遍历字典并检查密钥是否存在:
{% for err in form.errors %}
{% if not err.__all__ %}
{# print error #}
{% endif %}
{% endfor %}
但显然这是不可能的,因为在模板中我们无法访问以下划线 (doc) 开头的字典键。
问题:是否有一种内置方法可以访问(并可能打印)标准字段错误并单独访问 non_field_errors?
解决方案 这是建立在 Daniel Roseman 的 answer 之上的:
{% if form.errors %}
<div class="ui error icon message">
<ul>
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<li>{{ error|escape }}</li>
{% endfor %}
{% endif %}
{% for field in form %}
{% if field.errors %}
<li> {{ field.name }}
<ul>
{% for error in field.errors %}
<li>{{ error|escape }}</li>
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
【问题讨论】:
标签: python django forms django-templates