使用wtforms 實現輸入參數自動校驗

wtforms

背景

用戶註冊以及登陸是對入參進行校驗,一個一個寫比較麻煩,使用wtforms模塊,相似於先後端一體項目中的表單元素前端

  1. 繼承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")])
  2. 視圖函數中,對前端輸入的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)
相關文章
相關標籤/搜索