在Django表单中获取错误列表
我正在尝试在Django中创建一个表单。这个表单可以正常工作,但我希望所有的错误信息都显示在表单的顶部,而不是在每个有错误的字段旁边。我试着遍历form.errors,但它只显示了有错误的字段名称,而没有像“姓名是必填项”这样的错误信息。
这基本上是我希望在表单顶部使用的内容:
{% if form.??? %}
<ul class="errorlist">
{% for error in form.??? %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
那么我应该在???
那里用什么呢?它不是errors
; 那个只会输出字段的名称。
4 个回答
7
丹尼的回答其实不是个好主意。这样做可能会导致出现一个叫做“值错误”的问题。
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
{{field.label}}: {{ error|escape }}
{% endfor %}
{% endfor %}
{% endif %}
7
如果你想要一个简单的带条件的东西,可以这样做:
{% 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
,它其实是一个很大的字典。
75
form.errors 是一个字典,也就是说它是一个用来存储错误信息的地方。当你写 {% for error in form.errors %}
时,error 代表的是字典里的一个键。
你可以尝试这样做:
{% for field, errors in form.errors.items %}
{% for error in errors %}
...
等等。