zoukankan      html  css  js  c++  java
  • 表单 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)])

  • 相关阅读:
    CSS浮动(float、clear)通俗讲解
    JAVA 类的加载
    数据库操作 delete和truncate的区别
    正则表达式 匹配相同数字
    Oracle EBS OM 取消订单
    Oracle EBS OM 取消订单行
    Oracle EBS OM 已存在的OM订单增加物料
    Oracle EBS OM 创建订单
    Oracle EBS INV 创建物料搬运单头
    Oracle EBS INV 创建物料搬运单
  • 原文地址:https://www.cnblogs.com/sysnap/p/6568397.html
Copyright © 2011-2022 走看看