Python 如何处理form.non_字段_错误和form.errors?
我需要以不同的样式显示非字段错误和字段错误。所以我确实喜欢下面Python 如何处理form.non_字段_错误和form.errors?,python,django,django-templates,Python,Django,Django Templates,我需要以不同的样式显示非字段错误和字段错误。所以我确实喜欢下面 {% 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">
{% 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 %}
但当存在无任何字段错误的非字段错误时,将显示这两个部分。
如果没有字段错误,如何仅显示非字段错误部分?当存在表单错误(包括非字段错误)时,将触发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脆饼:
不要重新发明轮子
编辑:回答下面的第一条评论
如果您确实希望在单个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 %}
因此,如果只有字段错误,则不会显示非字段错误块。我知道表单。错误包括非字段错误,如何在单个div标记中显示所有字段错误?但是,即使没有字段错误,也会显示第二个块……如果没有字段错误,我不需要显示第二个块,您是对的。我的答案实际上与你的问题相反。你想做一些具体的事情,但我认为这应该是视图中的逻辑,而不是模板中的逻辑。不幸的是,没有什么比form.field\u错误更好的了,你应该自己想一想。