以前都是"吃快餐",利用别人的例子进行修改,弄得自己不明不白的,这次放假,静下心来好好的看看官方文档, 才发现写的代码有很多不必要的东西,可以进行很多优化
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,就这样,这里写的不完善,不过对于我来说暂时够用了