- flask wtforms 常用验证器:
- Email: 验证上传的数据是否为邮箱
- EqualTo:验证上传的数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。
- InputRequired:原始数据的验证。如果不是特说情况,应该使用InutRequired。
- Length: 长度限制,有min 和max两个值进行限制。
- NumberRange:数字区间, 有min和max两个值限制, 荣国处在两个数字之间满足。
- Regexp:自定义正则表达式。
- URL:必须是URL形式。
- UUID:验证UUID
- 常用验证器及自定义验证器演示
from wtforms import Form, StringField, IntegerField
from wtforms.validators import (Email, EqualTo, InputRequired, Length, NumberRange, Regexp, URL, UUID,ValidationError)
# validators 后边必须是list, 添加单个,多个验证器
class LoginForm(Form):
email = StringField(validators=[Email()])
username = StringField(validators=[InputRequired, Length(min=3, max=15)])
age = IntegerField(validators=[NumberRange(1,150)])
phont = StringField(validators=[Regexp(r'1[3,5,6,7,8]\d{9}')])
homeurl = StringField(validators=[URL()])
uuid = StringField(validators=[UUID()])
captcha = StringField(validators=[Length(6, 6)]) # 验证码
# 字定义验证器,validate_(写需要验证的字段名captcha, 添加后将同时验证长度和自定义的规则)
def validate_captcha(self, field):
# 模拟查询数据库,获取到数据库中保存的验证码
captcha_data = '123456'
# 通过.data 获取到前端传入数据, 与数据库中保存验证码对比。 不相等 通过raise 抛出ValidationError异常
# 在ValidationError中填写错误提示信息, 错误信息可通过 form.errors 获取到
if field.data != captcha_data:
raise ValidationError('验证码错误!')
@app.route('/register/', methods=['GET', 'POST'])
def resgiter():
if request.method == 'GET':
return render_template('register.html')
else:
form = RegisterWtform(request.form)
if form.validate():
return '注册成功'
else:
return '注册失败'
参考《知了课堂》flask网课整理,用于交流学习