用户注册以及登陆是对入参进行校验,一个一个写比较麻烦,使用wtforms模块,相似于先后端一体项目中的表单元素前端
继承wtforms 模块的Form类python
from wtforms.fields import * from wtforms.validators import * from wtforms import Form from apps.utils import constant class Reg(Form): # DataRequired 设置是否必填 user = StringField(validators=[DataRequired(message="no data"), Length(min=5, max=20, message="error user")]) # Regexp 入参格式正则匹配 password = PasswordField(validators=[DataRequired(message="no data"), Length(min=6, max=20, message="error pwd"), Regexp( regex=r"^((?=.*?\d)(?=.*?[a-zA-Z]).{6,20})|((?=.*?\d)(?=.*?[,.;!\[\]()@#$&*_]).{6,20})|" r"((?=.*?[a-zA-Z])(?=.*?[,.;!\[\]()@#$&*_]).{6,20})",message="not match pwd")]) # Optional 非必填项,有则校验 mobile = StringField(validators=[Optional(), Length(min=11, max=11, message="mobile length error"), Regexp(regex=r'^1[35789]\d{9}$', message="mobile error")]) email = StringField(validators=[Optional(), Regexp(regex=r"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",message="error email")])
视图函数中,对前端输入的body转form,校验,部分代码示例,body体须要先转jsonjson
body = self.request.body form = LoginForm.from_json(body) if form.validate(): user = form.user.data password = form.password.data ...... else: # list, 可能有多个错误 print(form.errors)