用戶註冊以及登陸是對入參進行校驗,一個一個寫比較麻煩,使用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)