Flask-WTF是一個Python包,旨在簡化使用表單的Flask框架應用程式。它提供了一個簡單而強大的介面,可以輕鬆地將表單添加到Flask應用程式中。使用Flask-WTF,您可以輕鬆驗證和處理表單數據,並為表單新增自訂驗證器和欄位。本文將介紹如何使用Flask-WTF新增表單到Flask應用程式中。
安裝Flask-WTF
首先,需要安裝Flask-WTF套件。可以使用pip進行安裝:
pip install Flask-WTF
建立Flask應用程式
在開始新增表單之前,需要建立一個Flask應用程式。以下是一個簡單的Flask應用程式範例:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!'
對於更複雜的應用程序,可能需要更多的配置和設定。
建立表單類別
Flask-WTF使用表單類別來描述表單欄位。表單類別是由Flask-WTF中提供的類別FlaskForm
衍生而來的。在表單類別中,可以定義表單欄位、驗證器和其他屬性。以下是一些基本的表單欄位類型:
以下是一個簡單的表單類別範例:
from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired class NameForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) submit = SubmitField('Submit')
在上面的範例中,表單類別NameForm
包含一個名稱為name
的字串欄位和一個名稱為submit
的提交按鈕。字串欄位使用StringField
類型和DataRequired
驗證器定義。 DataRequired
驗證器確保欄位值不為空。
在表單類別中,也可以定義自訂驗證器。例如,以下是自訂驗證器,確保使用者輸入的值低於50個字元:
from wtforms import ValidationError class LengthValidator(object): def __init__(self, max_chars): self.max_chars = max_chars def __call__(self, form, field): if len(field.data) > self.max_chars: raise ValidationError('Value must be less than {} characters'.format(self.max_chars)) class NameForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), LengthValidator(50)]) submit = SubmitField('Submit')
在上面的範例中,定義了一個驗證器LengthValidator
。此驗證器使用一個最大長度參數初始化,並檢查輸入欄位的長度是否超過了最大長度。在字串欄位定義中,將LengthValidator
驗證器新增至驗證器清單中,以確保其屬性值低於50個字元。
在表單類別中,也可以定義其他屬性,例如渲染欄位時使用的CSS類別。這些屬性可以用來自訂表單欄位的外觀和感覺。
使用表單
要在Flask應用程式中使用表單,需要在檢視函數中建立表單實例。可以從表單類別建立表單實例,並將其傳遞給範本。以下是視圖函數的範例:
from flask import render_template from app import app from forms import NameForm @app.route('/', methods=['GET', 'POST']) def index(): form = NameForm() if form.validate_on_submit(): name = form.name.data return render_template('index.html', name=name) return render_template('index.html', form=form)
在上面的範例中,視圖函數index
建立了表單實例form
。如果表單已提交,並且驗證成功,則從提交表單中取得名稱並將其傳遞給範本。如果表單尚未提交或驗證失敗,則顯示表單。
在範本中,可以使用Flask-WTF提供的表單渲染函數來呈現表單。以下是一個簡單的範本範例,使用Jinja2範本引擎和Bootstrap樣式:
<!doctype html> <html> <head> <title>Flask-WTF Example</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.3/css/bootstrap.min.css"> </head> <body> <div class="container"> <h1>Hello {{ name }}!</h1> <form method="post"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name }} {% for error in form.name.errors %} <span>{{ error }}</span> {% endfor %} {{ form.submit }} </form> </div> </body> </html>
在範本中,使用form
物件渲染表單欄位和提交按鈕。 csrf_token
字段是一個隱藏字段,用於防止跨站點請求偽造攻擊。
總結
使用Flask-WTF,可以輕鬆地將表單新增至Flask應用程式。使用表單類,可以建立自訂表單欄位和驗證器。在視圖函數中,可以建立表單實例,並使用範本引擎渲染表單。 Flask-WTF還提供了其他功能,例如檔案上傳、表單巢狀和表單預處理。了解Flask-WTF的功能,可以使Flask應用程式的表單處理更加簡單和有效率。
以上是Flask-WTF:將表單新增至Flask應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!