我需要以不同的样式显示non_field_errors和字段错误。所以我喜欢下面的
{% if form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{{ form.non_field_errors }}
</div>
{% endif %}
{% if form.errors %}
<div class="alert alert-info" role="alert">
{% for field in form %}
{% if field.errors %}
{{ field.errors| striptags }}
{% endif %}
{% endfor %}
</div>
{% endif %}
但是当存在没有任何字段错误的非字段错误时,将显示这两个部分。 如果没有字段错误,如何仅显示非字段错误部分?
答案 0 :(得分:0)
当存在表单错误(包括非字段错误)时,会触发if条件{% if form.errors %}
。
也许您可以将第二个块转换为for循环并将if条件放在:
中{% for field in form %}
{% if field.errors %}
<div class="alert alert-info" role="alert">
{{ field.errors }}
</div>
{% endif %}
{{ field }}
{% endfor %}
这只是一个非常简单的例子。您可以根据自己的需要进行扩展和调整。
编辑:
更好的解决方案是使用django-crispy-forms:
http://django-crispy-forms.readthedocs.org/en/latest/
不要重新发明轮子!
编辑:回答下面的第一条评论
如果您真的想在单个DIV中显示所有字段错误,无论出于何种原因,您最终都可以写:
{% if form.errors %}
{# first block #}
{% if form.non_field_errors %}
{# your logic #}
{% endif %}
{# second block #}
<div class="alert alert-info" role="alert">
{% for field in form %}
{{ field.errors }}
{# your logic #}
{% endfor %}
</div>
{% endif %}
因此,如果只有字段错误,则不会显示非字段错误块。