WTForms模塊

下載安裝

pip install WTForms

主要概念

  • Forms:Forms類是WTForms的核心容器。表單(Forms)表示域(Fields)的集合,域能通過表單的字典形式或者屬性形式訪問。
  • Fields:Fields(域)做最繁重的工作。每個域(Field)代表一個數據類型,並且域操作強制表單輸入爲響應的數據類型。例如,InputRequiredStringField表示兩種不同的數據類型。域除了包含的數據之外,還包含大量有用的屬性,例如標籤、描述、驗證錯誤的列表。
  • Validators:Validators(驗證器)只是接受輸入,驗證它是否滿足某些條件,比如字符串的最大長度,然後返回。或者,如果驗證失敗,則引發ValidationError。這個系統非常簡單和靈活,允許在字段上鍊接任意數量的驗證器。
  • Widget:Widget(組件)的工作是渲染域(field)的HTML表示。每個域可以指定Widget實例,但每個域默認擁有一個合理的Widget。
  • CSRF:CSRF(Cross-site reqest forgery)跨站請求僞造。也被稱爲one-click attack或者session riding,通常縮寫爲CSRF或者XSRF,是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法。跟跨網站腳本(XSS)相比,XSS利用的是用戶對指定網站的信任,CSRF利用的是網站對用戶網頁瀏覽器的信任。

基本使用

(1)創建表單類。

from wtforms import Form, BooleanField, StringField, validators

class RegisterForm(Form):
    username = StringField('Username', [validators.Length(min=4, max=25)])
    email = SringField('Email Address', [validators.Length(min=6, max=35)])
    accept_rules = BooleanField('I accept the site rules', [validators.InputRequired()])

(2)實例化表單類。

@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegisterForm(request.form)  # 實例化表單類
    if request.method = 'POST' and form.validate():  # 如果提交表單,並字段驗證通過
        # 獲取字段內容
        email = from.email.data
        username = from.username.data
        accept_rules = from.accept.data
        # 省略其餘代碼

    return render_template('register.html', form=form) # 渲染模板

(3)模板中渲染域。

<form method="POST" action="/login">
    <div>{{ form.email.label }}:{{ form.email() }}</div>
    <div>{{ form.username.label }}:{{ form.username() }}</div>
    <div>{{ form.accept_rules.label }}:{{ form.accept_rules() }}</div>
</form>

上述代碼中,使用form.username.label來獲取RegisterForm類的username的名稱,使用form.username來獲取表單中的username域信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章