WTForms 驗證表單
阿新 • • 發佈:2018-12-09
#
from wtforms.validators import Length, EqualTo from wtforms import Form, StringField #驗證表單 class RegisterForm(Form): class RegistForm(Form): username = StringField(validators=[Length(min=3, max=10, message='使用者名稱長度必須在3到10位之間')]) password = StringField(validators=[Length(min=6, max=10)]) password_repeat = StringField(validators=[Length(min=6, max=10), EqualTo("password")])
#
@app.route('/login/',methods=['GET','POST']) def login(): if request.method == 'GET': return render_template("login.html") else: form =RegisterForm(request.form) if form.validate(): return "success" else: print(form.errors) return "fail"
#
### 做表單驗證: 1. 自定義一個表單類,繼承自wtforms.Form類。 2. 定義好需要驗證的欄位,欄位的名字必須和模版中那些需要驗證的input標籤的name屬性值保持一致。 3. 在需要驗證的欄位上,需要指定好具體的資料型別。 4. 在相關的欄位上,指定驗證器。 5. 以後在檢視中,就只需要使用這個表單類的物件,並且把需要驗證的資料,也就是request.form傳給這個表單類,以後呼叫form.validate()方法, 如果返回True,那麼代表使用者輸入的資料都是合法的,否則代表使用者輸入的資料是有問題的.如果驗證失敗了, 那麼可以通過form.errors來獲取具體的錯誤資訊。
#常用的驗證器
1. Email:驗證上傳的資料是否為郵箱。 2. EqualTo:驗證上傳的資料是否和另外一個欄位相等,常用的就是密碼和確認密碼兩個欄位是否相等。 3. InputRequir:原始資料的需要驗證。如果不是特殊情況,應該使用InputRequired。 3. Length:長度限制,有min和max兩個值進行限制。 4. NumberRange:數字的區間,有min和max兩個值限制,如果處在這兩個數字之間則滿足。 5. Regexp:自定義正則表示式。 6. URL:必須要是URL的形式。 7. UUID:驗證UUID。