自定义验证器:wtforms.validators模块中的Validator基类使用方法
发布时间:2023-12-19 03:23:43
wtforms.validators模块中的Validator基类是用于自定义验证器的基类。通过继承该基类,并实现其中的__call__()方法,可以创建自定义的验证器。
Validator基类的使用方法如下:
1. 创建一个继承自Validator基类的子类,并实现__call__()方法;
2. 在__call__()方法中进行具体的验证逻辑,并根据验证结果返回True或False;
3. 可以在__init__()方法中接收参数,并在__call__()方法中使用这些参数。
下面是一个使用例子:
from wtforms.validators import Validator
class MyValidator(Validator):
def __init__(self, message=None):
self.message = message
def __call__(self, form, field):
if field.data != 'hello':
if self.message is None:
message = 'Field must be "hello".'
else:
message = self.message
raise ValueError(message)
# 使用自定义验证器
from wtforms import Form, StringField
class MyForm(Form):
name = StringField(validators=[MyValidator()])
以上例子中,我们创建了一个自定义验证器MyValidator,它要求字段的值必须为"hello"。我们在__call__()方法中进行了具体的验证逻辑,如果字段的值不为"hello",则抛出ValueError异常。
然后,我们使用自定义验证器MyValidator来验证一个字段。我们创建了一个表单类MyForm,其中的name字段使用了MyValidator作为验证器。这样,在表单数据被提交时,会自动调用MyValidator进行验证。
如果验证失败,会抛出ValueError异常,并根据自定义验证器中设置的错误消息进行提示。
总结:
使用wtforms.validators模块中的Validator基类,可以方便地创建自定义的验证器。只需要继承基类,并实现__call__()方法,在其中进行具体的验证逻辑即可。使用时,将自定义验证器作为字段的验证器之一传递给wtforms中的表单字段即可。当表单数据被提交时,自定义验证器会自动被调用并进行验证。
