关于flask-wtf中的validators
以前都是"吃快餐",利用别人的例子进行修改,弄得自己不明不白的,这次放假,静下心来好好的看看官方文档, 才发现写的代码有很多不必要的东西,可以进行很多优化
flask-wtforms是一个优秀的flask扩展,可惜官方文档说的不明不白,只是简单的说了大概的 功能,如果想要更好的利用这个扩展,请google wtforms,或者看这里
这里记录一下wtforms的validators
参考文档
1class RegisterForm(Form): 2 name = StringField('用户名:') 3 email = StringField('邮箱:') 4 passwd = PasswordField('密码:') 5 repasswd = PasswordField('重复密码:') 6 register = SubmitField('注册')
这只是一个最简单注册表单
慢慢地加上一些要求:
输入不能为空
1from wtforms.validators import Required 2name = StringField('用户名:', 3 [Required()])
限制name长度
1from wtforms.validators import Length 2name = StringField('用户名:', 3 [Length(min=4, 4 max=20)])
判断邮箱格式是否正确
1from wtforms.validators import Email 2email = StringField('邮箱', 3 [Email()])
比较两次密码是否一致
1from wtforms.validators import Email 2passwd = PasswordField('密码:', [EqualTo('repasswd')]) 3repasswd = PasswordField('重复密码:')
自定义错误信息
默认错误信息可以通过
1form = RegisterForm() 2print(form.errors) //或者print(form.name.errors)
查看
比如输入不能为空的默认错误信息
1'This field is required.'
想要修改默认信息,请使用message
比如:
1name = StringField('用户名:', 2 [Required(message=u'输入不能为空')])
同样的
1Length(min=4, 2 max=25, 3 message=u'用户名长度在4到25个字符之间') 4Email(message=u'错误的邮箱地址') 5EqualTo('confirm',message=u'两次密码不一致')
这样就不用在视图文件不停地判断了,不要像我原先那样
1if form.name.data == '' or form.passwd.data == '': 2 flash(u'输入不能为空') 3if form.repasswd.data != form.passwd.data: 4 flash(u'两次密码不一致')
ok,就这样,这里写的不完善,不过对于我来说暂时够用了
