我正在尝试在Django中创建一个表单。这是有效的,但我希望所有错误都在表单的顶部,而不是在每个有错误的字段旁边。我尝试在form.errors上循环,但它只显示有错误的字段的名称,而不是错误消息,例如“名称是必需的。”
这就是我希望能够在表单顶部使用的内容:
{% if form.??? %}
<ul class="errorlist">
{% for error in form.??? %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
我会在???
使用什么?这不是errors
;只输出字段的名称。
答案 0 :(得分:56)
form.errors是一本字典。当您执行{% for error in form.errors %}
时,错误对应于密钥。
而是尝试
{% for field, errors in form.errors.items %}
{% for error in errors %}
...
等
答案 1 :(得分:2)
如果你想要一个简单的条件采取这种方式:
{% if form.errors %}
<ul>
{% for error in form.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
如果您想了解更多信息并查看字段的名称和错误,请执行以下操作:
{% if form.errors %}
<ul>
{% for key,value in form.errors.items %}
<li>{{ key|escape }} : {{ value|escape }}</li>
{% endfor %}
</ul>
{% endif %}
如果你想了解form.errors
是一本很大的词典。
答案 2 :(得分:1)
您可以使用以下代码:
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endif %}
此添加https://docs.djangoproject.com/en/3.0/ref/forms/api/#django.forms.Form.non_field_error
答案 3 :(得分:0)
丹尼斯的答案不是一个好主意。您可以获得ValueError。
检查。
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
{{field.label}}: {{ error|escape }}
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
{{field.label}}: {{ error|escape }}
{% endfor %}
{% endif %}