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')
3 自定義驗證器 - 把驗證器編寫成單獨的函數
這樣需要在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 ])
4 自定義驗證器 - 把驗證器編寫成單獨的類
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)])