搜尋
首頁後端開發Python教學Flask-WTF:將表單新增至Flask應用程式

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衍生而來的。在表單類別中,可以定義表單欄位、驗證器和其他屬性。以下是一些基本的表單欄位類型:

  • StringField:用於輸入字串。
  • IntegerField:用於輸入整數。
  • BooleanField:用於輸入布林值(複選框)。
  • TextAreaField:用於輸入多行文字。
  • SelectField:用於選擇下拉式選單中的選項。
  • RadioField:用於單選按鈕。
  • FileField:用於上傳檔案。

以下是一個簡單的表單類別範例:

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 id="Hello-name">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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
可以在Python數組中存儲哪些數據類型?可以在Python數組中存儲哪些數據類型?Apr 27, 2025 am 12:11 AM

pythonlistscanStoryDatatepe,ArrayModulearRaysStoreOneType,and numpyArraySareSareAraysareSareAraysareSareComputations.1)列出sareversArversAtileButlessMemory-Felide.2)arraymoduleareareMogeMogeNareSaremogeNormogeNoreSoustAta.3)

如果您嘗試將錯誤的數據類型的值存儲在Python數組中,該怎麼辦?如果您嘗試將錯誤的數據類型的值存儲在Python數組中,該怎麼辦?Apr 27, 2025 am 12:10 AM

WhenyouattempttostoreavalueofthewrongdatatypeinaPythonarray,you'llencounteraTypeError.Thisisduetothearraymodule'sstricttypeenforcement,whichrequiresallelementstobeofthesametypeasspecifiedbythetypecode.Forperformancereasons,arraysaremoreefficientthanl

Python標準庫的哪一部分是:列表或數組?Python標準庫的哪一部分是:列表或數組?Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

您應該檢查腳本是否使用錯誤的Python版本執行?您應該檢查腳本是否使用錯誤的Python版本執行?Apr 27, 2025 am 12:01 AM

ThescriptisrunningwiththewrongPythonversionduetoincorrectdefaultinterpretersettings.Tofixthis:1)CheckthedefaultPythonversionusingpython--versionorpython3--version.2)Usevirtualenvironmentsbycreatingonewithpython3.9-mvenvmyenv,activatingit,andverifying

在Python陣列上可以執行哪些常見操作?在Python陣列上可以執行哪些常見操作?Apr 26, 2025 am 12:22 AM

Pythonarrayssupportvariousoperations:1)Slicingextractssubsets,2)Appending/Extendingaddselements,3)Insertingplaceselementsatspecificpositions,4)Removingdeleteselements,5)Sorting/Reversingchangesorder,and6)Listcomprehensionscreatenewlistsbasedonexistin

在哪些類型的應用程序中,Numpy數組常用?在哪些類型的應用程序中,Numpy數組常用?Apr 26, 2025 am 12:13 AM

NumPyarraysareessentialforapplicationsrequiringefficientnumericalcomputationsanddatamanipulation.Theyarecrucialindatascience,machinelearning,physics,engineering,andfinanceduetotheirabilitytohandlelarge-scaledataefficiently.Forexample,infinancialanaly

您什麼時候選擇在Python中的列表上使用數組?您什麼時候選擇在Python中的列表上使用數組?Apr 26, 2025 am 12:12 AM

useanArray.ArarayoveralistinpythonwhendeAlingwithHomoGeneData,performance-Caliticalcode,orinterfacingwithccode.1)同質性data:arraysSaveMemorywithTypedElements.2)績效code-performance-calitialcode-calliginal-clitical-clitical-calligation-Critical-Code:Arraysofferferbetterperbetterperperformanceformanceformancefornallancefornalumericalical.3)

所有列表操作是否由數組支持,反之亦然?為什麼或為什麼不呢?所有列表操作是否由數組支持,反之亦然?為什麼或為什麼不呢?Apr 26, 2025 am 12:05 AM

不,notalllistoperationsareSupportedByArrays,andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing,wheremactsperformance.2)listssdonotguaranteeconecontanttanttanttanttanttanttanttanttanttimecomplecomecomplecomecomecomecomecomecomplecomectacccesslectaccesslecrectaccesslerikearraysodo。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),