1. 程式人生 > >WTForms 驗證表單

WTForms 驗證表單

#

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。