欢迎访问宙启技术站
智能推送

自定义验证器: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中的表单字段即可。当表单数据被提交时,自定义验证器会自动被调用并进行验证。