以前都是"吃快餐",利用别人的例子进行修改,弄得自己不明不白的,这次放假,静下心来好好的看看官方文档, 才发现写的代码有很多不必要的东西,可以进行很多优化
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,就这样,这里写的不完善,不过对于我来说暂时够用了
知识共享署名-非商业性使用-相同方式共享4.0国际许可协议