获取Django表单中的错误列表

ick*_*fay 28 python django django-templates django-forms

我正在尝试在Django中创建一个表单.这是有效的,但我希望所有错误都在表单的顶部,而不是在每个有错误的字段旁边.我尝试循环form.errors,但它只显示有错误的字段的名称,而不是错误消息,如"名称是必需的".

这就是我希望能够在表单顶部使用的内容:

{% if form.??? %}
    <ul class="errorlist">
    {% for error in form.??? %}
        <li>{{ error }}</li>
    {% endfor %}
    </ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我会在???那里使用什么?不是errors; 只输出字段的名称.

Dan*_*rts 58

form.errors是一本字典.当你做{% for error in form.errors %}错误对应的键.

而是试试

{% for field, errors in form.errors.items %}
    {% for error in errors %}
...
Run Code Online (Sandbox Code Playgroud)

等等.

  • 可能只需要在字典上调用.items(),它会返回一系列(key,value)元组,这些元组会解压缩到你的(字段,错误)中. (7认同)

san*_*des 6

Dannys 的回答不是一个好主意。你可能会得到一个 ValueError。

{% if form.errors %}
      {% for field in form %}

           {% for error in field.errors %}
                {{field.label}}: {{ error|escape }}
           {% endfor %}

      {% endfor %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)


Buk*_*uky 5

如果你想要一些简单的条件,请采取这种方式:

{% if form.errors %}
  <ul>
    {% for error in form.errors %} 
      <li>{{ error }}</li>
    {% endfor %}
  </ul>
{% endif %}  
Run Code Online (Sandbox Code Playgroud)

如果您想了解更多信息并查看该字段的名称和错误,请执行以下操作:

{% if form.errors %}
  <ul>
    {% for key,value in form.errors.items %} 
      <li>{{ key|escape }} : {{ value|escape }}</li>
    {% endfor %}
  </ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

如果你想了解form.errors是一本大词典。