关于flask-wtf中的validators


以前都是"吃快餐",利用别人的例子进行修改,弄得自己不明不白的,这次放假,静下心来好好的看看官方文档, 才发现写的代码有很多不必要的东西,可以进行很多优化

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,就这样,这里写的不完善,不过对于我来说暂时够用了

作者: honmaple
链接: https://honmaple.me/articles/2016/02/关于flask-wtf中的validators.html
版权: 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat