如何在WTForms中进行表单级验证?

时间:2014-07-09 16:38:37

标签: wtforms flask-wtforms

我正在使用wtforms在应用程序中构建大量表单。我需要执行并向用户显示“表单级”验证错误。

没有记录/支持的方法来执行此操作。那样就好。

我知道我可以覆盖表单validate方法,在那里执行我的检查,并将我的额外验证错误放在表单的_errors属性上。

这种方法的问题在于form._errors还包含所有字段级验证错误(当然,也可以通过每个字段的errors属性访问)。

因此,我想要一种干净的,API一致的方式来返回表单级验证错误。我可以在_error属性上自己解决这个问题,但我对这个问题的其他解决方案感兴趣。

如何在wtforms中进行表单级验证?

2 个答案:

答案 0 :(得分:0)

Ther在wtforms google group中解决了这个问题:

  

最简单的方法是为表单定义中的一个字段添加validate_foo方法,然后检查其他字段。所有验证器都接收表单和字段作为参数。

但我宁愿使用烧瓶flash messages

我在wtforms中填充feature request也许他们让这个功能发生了。 :)

答案 1 :(得分:0)

正如snakecharmerb 所说:“表单级别验证将在wtforms 3 (github commit) 中可用”

但目前 WTForms 3 尚未发布,因此如果您的条件不满足,我建议您覆盖 validate() 表单方法并附加 flash 消息。示例如下。

from flask import flash

def validate(self):
    result = super().validate()  # Call to parent class' validate method
    valid = this or that  # Your testing condition
    if not valid:  # Attach flash message if your validation fails
        flash('Your message', 'form_error')
    return result and valid