• 表单 Flask-WTF


    1 wtforms内置的校验器

    Class wtforms.validators.DataRequired(message=None)
    此验证器将会检测field是否输入了数值,实际上是进行了if field.data操作。并且,如数数据是一个字符串,那么只包含空格的字符串将会被认为是False。
    参数:message-当验证失败时返回的错误消息数:message-当验证失败时返回的错误消息

    class wtforms.validators.Email(message=None)
    此验证器验证Email的地址,注意只会验证Email的格式,最好在使用的时候你能够自己校验他的真实性,比如激活或者查找
    参数:message-当验证失败时返回的错误消息验证失败时返回的错误消息

    class wtforms.validators.EqualTo(fieldname, message=None)
    用于比较两个Field的数据是否相等。
    参数: filedname-你要比较的另一个Field的名称
    message-当验证失败时返回的错误消息,可以用%(other_label)s和 %(other_name)s来更提供更多的错误消息
    此验证器可用于验证一个或者多个相同field的情景,更改密码的代码

    class wtforms.validators.InputRequired(message=None)
    用于验证field有数据输入,注意与DataRequired的区别,InputRequired主要看是否输入了数据,而DataRequired用于那些强制Post的数据

    class wtforms.validators.IPAddress(ipv4=True, ipv6=False, message=None)
    ipv4-当为Ture时,允许有效的IPv4地址(默认为True)
    ipv6-当为Ture时,允许有效的IPv6地址(默认为False)
    参数:message-当验证失败时返回的错误消息

    class wtforms.validators.Length(min=-1, max=-1,message=None)
    验证字符串的长度
    min-输入的最小的字符串长度,如果未指定,则不校验最小字符串
    max-输入的最大的字符串长度,如果未指定,则不校验最大字符串
    message-当验证失败时返回的错误消息,如果需要,可以通过%(min)d,%(max)d来自行设置

    class wtforms.validators.NumberRange(min=None, max=None,message=None)
    用于验证数据是否在最小值与最大值之间,支持的常用的数据类型,如float等,不只是int
    min-输入的最小的字符串长度,如果未指定,则不校验最小字符串
    max-输入的最大的字符串长度,如果未指定,则不校验最大字符串
    message-当验证失败时返回的错误消息,如果需要,可以通过%(min)d,%(max)d来自行设置

    class wtforms.validators.Regexp(regex, flags=0, message=None)
    通过正则表达式验证
    regex-正则表达式,也可以通过参数传递
    flags-regex使用标示,如re.IGNORECASE,如果regex不是一个字符串将忽略
    message-当验证失败时返回的错误消息


    class wtforms.validators.URL(require_tld=True, message=None)
    通过正则表达式对URL进行简单的验证,与Email验证器相似,可能在之后需要其他的方式验证其真实性
    require_tld-当设置为True时,必须在域名中包含顶级域名等,当需要验证localhost时设置为False

    2 自定义验证器 - namefield验证器

    在类里面,编写 def validate_namefieldxxx(form, field)函数,通过raise ValidationError提示错误信息,编写在类里面的验证器,不需要在显示在feild里面指定validators=, 比如

    class LoginForm(Form):

        openid = StringField('openid', validators=[DataRequired()])

        remember_me = BooleanField('remember_me', default=False)

        def validate_remember_me(form, field):

            if field.data != False:

                raise ValidationError('remember_me must be False')

    自定义验证器 - 把验证器编写成单独的函数

    这样需要在feild里面指定validators=,比如

    def validate_remember_me(form, field):

        if field.data != False:

            raise ValidationError('remember_me must be False2')

          

    class LoginForm(Form):

        openid = StringField('openid', validators=[DataRequired()])

        remember_me = BooleanField('remember_me', default=False,

                                   validators=[validate_remember_me ])

    自定义验证器 - 把验证器编写成单独的类

    class Length(object):

        def __init__(self, min=-1, max=-1, message=None):

            self.min = min

            self.max = max

            if not message:

                message = u'Field must be between %i and %icharacters long.' % (min, max)

            self.message = message

        def __call__(self, form, field):

            l = field.data and len(field.data) or 0

            if l < self.min or self.max != -1 and l > self.max:

                raise ValidationError(self.message)

    length = Length

    class MyForm(Form):

        name = StringField('Name', [InputRequired(), length(max=50)])

  • 相关阅读:
    matplotlib 入门之Sample plots in Matplotlib
    matplotlib 入门之Pyplot tutorial
    Django Admin Cookbook-本书中使用的模型
    Django Admin Cookbook-简介
    Django Admin Cookbook 中文版
    Selenium向iframe富文本框输入内容
    Pytest权威教程-更改标准(Python)测试发现
    Pytest权威教程25-配置
    Pytest权威教程24-Pytest导入机制及系统路径
    Flask一种通用视图,增删改查RESTful API的设计
  • 原文地址:https://www.cnblogs.com/sysnap/p/6568397.html
Copyright © 2020-2023  润新知