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