Ответ 1
form.errors - словарь. Когда вы выполняете {% for error in form.errors %}
ошибка соответствует ключу.
Вместо этого попробуйте
{% for field, errors in form.errors.items %}
{% for error in errors %}
...
Etc.
Я пытаюсь создать форму в Django. Это работает и все, но я хочу, чтобы все ошибки находились в верхней части формы, а не рядом с каждым полем с ошибкой. Я пробовал зацикливаться на form.errors, но он только показывал имя поля с ошибкой, а не сообщение об ошибке, такое как "Name is required".
Это в значительной степени то, что я хотел бы использовать в верхней части формы:
{% if form.??? %}
<ul class="errorlist">
{% for error in form.??? %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
Что я буду использовать для ???
там? Это не errors
; который просто выводит имена полей.
form.errors - словарь. Когда вы выполняете {% for error in form.errors %}
ошибка соответствует ключу.
Вместо этого попробуйте
{% for field, errors in form.errors.items %}
{% for error in errors %}
...
Etc.
Если вы хотите, чтобы что-то простое с условием выполнялось так:
{% 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
- большой словарь.
Дэннис ответ не очень хорошая идея. Вы можете получить ValueError.
Check this.
{% 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 %}
{{ error|escape }}
{% endfor %}
{% endif %}