表單 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)])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM