使用wtforms.validators中的AnyOf()函数进行选项验证
发布时间:2023-12-28 22:14:34
wtforms.validators中的AnyOf()函数用于验证字段的值是否在给定的选项中。如果字段的值不在选项中,将引发验证错误。
函数的使用方式为:
AnyOf(values, message=None)
该函数接受两个参数:
- values: 可以是一个列表或元组,表示允许的选项值。
- message: 可选参数,表示验证失败时显示的错误消息。
下面是一个使用AnyOf()函数进行选项验证的示例:
from wtforms import Form, StringField, validators
from wtforms.validators import AnyOf
class MyForm(Form):
color = StringField('Favorite color', validators=[AnyOf(['red', 'blue', 'green'], message='Invalid color')])
form = MyForm()
print(form.validate()) # 输出False,因为字段没有被填充
print(form.errors) # 输出 {'color': ['This field is required.']}
form.color.data = 'yellow'
print(form.validate()) # 输出False,因为字段的值不在选项中
print(form.errors) # 输出 {'color': ['Invalid color']}
在上面的示例中,我们定义了一个表单类MyForm,其中包含一个名为color的StringField字段。该字段使用AnyOf()验证器进行选项验证。选项是['red', 'blue', 'green'],表示只有这三种颜色的值是允许的。如果字段的值不是这三个颜色之一,将引发验证错误。
在创建表单实例后,我们可以通过调用validate()方法来验证表单数据。如果字段的值不在选项中,将返回False,并将错误消息存储在form.errors字典中。
在示例中,我们通过分别将color字段的值设置为'yellow'和None来验证表单。 个验证将返回False,因为'yellow'不是允许的颜色。第二个验证将返回False,因为字段没有被填充。在这两种情况下,form.errors字典都包含相应的错误消息。
通过使用AnyOf()函数,我们可以轻松地对字段值进行选项验证,以确保用户只能选择给定的选项中的值。
