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