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 %}