使用wtforms.validators中AnyOf()函数的选项验证示例代码
发布时间:2023-12-28 22:21:40
AnyOf()函数是WTForms中的验证器之一,用于验证表单字段的值是否在指定的选项中。它接受一个可迭代的选项列表作为参数,如果字段的值包含在列表中,则验证通过。
下面是一个使用AnyOf()函数的选项验证示例代码:
from wtforms import StringField, SubmitField, Form, validators
class MyForm(Form):
fruit = StringField('Favorite Fruit', validators=[validators.AnyOf(['apple', 'banana', 'orange'])])
submit = SubmitField('Submit')
在上面的示例中,我们定义了一个表单MyForm,其中包含一个字符串字段fruit和一个提交按钮字段submit。fruit字段使用AnyOf()验证器,并将选项列表['apple', 'banana', 'orange']作为参数传递给验证器。
接下来,我们可以使用这个表单类来创建一个实例,并对其进行验证:
form = MyForm() form.validate() # False form.fruit.data = 'apple' form.validate() # True
在上面的代码中,我们首先创建了一个表单实例form,然后调用了validate()方法来验证表单的数据。由于fruit字段的值为空,所以验证失败,返回False。
然后,我们为fruit字段的值赋予了'apple',并再次调用了validate()方法。由于'apple'是选项列表中的一个值,所以验证通过,返回True。
需要注意的是,验证器会在validate()方法中自动调用,也可以手动调用form.validate()来进行验证。
除了直接在验证器参数中传递选项列表外,我们还可以通过message参数来指定验证失败时的错误消息。
fruit = StringField('Favorite Fruit', validators=[validators.AnyOf(['apple', 'banana', 'orange'], message='Please select a valid fruit')])
在上面的代码中,我们为AnyOf()验证器添加了message参数,当验证失败时,将显示自定义的错误消息。
总结一下,AnyOf()函数的选项验证器可用于验证字段的值是否在指定的选项列表中。它非常适用于需要从预定义选项中选择的表单字段的验证。
