WTForms получает ошибки
В настоящее время в WTForms для доступа к ошибкам вам необходимо прокручивать полевые ошибки следующим образом:
for error in form.username.errors:
print error
Поскольку я создаю приложение для отдыха, которое не использует представления формы, мне приходится проверять все поля формы, чтобы найти, где находится ошибка.
Есть ли способ сделать что-то вроде:
for fieldName, errorMessage in form.errors:
...do something
Ответы
Ответ 1
Фактический объект form
имеет атрибут errors
, который содержит имена полей и их ошибки в словаре. Таким образом, вы можете сделать:
for fieldName, errorMessages in form.errors.items():
for err in errorMessages:
# do something with your errorMessages for fieldName
Ответ 2
Для тех, кто хочет сделать это в шаблонах Flask:
{% for field in form.errors %}
{% for error in form.errors[field] %}
<div class="alert alert-error">
<strong>Error!</strong> {{error}}
</div>
{% endfor %}
{% endfor %}
Ответ 3
Чистое решение для шаблонов Колба:
Python 3:
{% for field, errors in form.errors.items() %}
<div class="alert alert-error">
{{ form[field].label }}: {{ ', '.join(errors) }}
</div>
{% endfor %}
Python 2:
{% for field, errors in form.errors.iteritems() %}
<div class="alert alert-error">
{{ form[field].label }}: {{ ', '.join(errors) }}
</div>
{% endfor %}