WTForms 获取错误信息

35 投票
4 回答
35258 浏览
提问于 2025-04-16 20:11

目前在WTForms中,要查看错误信息,你需要像这样逐个检查每个字段的错误:

for error in form.username.errors:
        print error

因为我正在构建一个不使用表单视图的REST应用,所以我不得不检查所有表单字段,才能找到错误出在哪里。

有没有办法让我可以这样做:

for fieldName, errorMessage in form.errors:
        ...do something

4 个回答

23

如果你想在Flask模板中做到这一点:

{% for field in form.errors %}
{% for error in form.errors[field] %}
    <div class="alert alert-error">
        <strong>Error!</strong> {{error}}
    </div>
{% endfor %}
{% endfor %}
41

这是一个关于Flask模板的更简洁的解决方案:

适用于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 %}
47

实际的 form 对象有一个 errors 属性,这个属性里面是一个字典,包含了字段名称和它们对应的错误信息。所以你可以这样做:

for fieldName, errorMessages in form.errors.items():
    for err in errorMessages:
        # do something with your errorMessages for fieldName

撰写回答