Получение списка ошибок в форме Django - PullRequest
27 голосов
/ 10 января 2010

Я пытаюсь создать форму в Django. Это работает и все, но я хочу, чтобы все ошибки были в верхней части формы, а не рядом с каждым полем, в котором есть ошибка. Я попытался зациклить на form.errors, но он показывал только имя поля, в котором произошла ошибка, а не сообщение об ошибке, такое как «Требуется имя».

Это то, что я хотел бы использовать в верхней части формы:

{% if form.??? %}
    <ul class="errorlist">
    {% for error in form.??? %}
        <li>{{ error }}</li>
    {% endfor %}
    </ul>
{% endif %}

Что бы я использовал для ??? там? Это не errors; это просто выводит имена полей.

Ответы [ 2 ]

57 голосов
/ 10 января 2010

form.errors - это словарь. При этом {% for error in form.errors %} ошибка соответствует ключу.

Вместо этого попробуйте

{% for field, errors in form.errors.items %}
    {% for error in errors %}
...

1007 * Etc. *

2 голосов
/ 11 января 2017

Если вы хотите что-то простое с условием, возьмите такой:

{% 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 это большой словарь.

...