flask 使用Flask WTF處理表單

2022-05-07 23:48:25 字數 2696 閱讀 6346

我的理解是flask-wtf與html檔案的關係就如同sqlalchemy與資料庫之間的關係

通過python form類,生成html**,並在html模板檔案中通過}變數的方式引用這些生成的html**

好處就是可以使用python類管理html的表單,而不需要自己去敲html**

flask-wtf

flask的處理機制:

例項:

basic.html

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>title

title

>

head

>

<

body

>

<

form

method

="post"

>

} }}

<

br>

}}<

br>

}}<

br>

}<

br>

form

>

body

>

html

>

forms.py

from flask_wtf import flaskform

from wtforms import stringfield,passwordfield,booleanfield,submitfield

from wtforms.validators import datarequired,length

class loginform(flaskform):

username=stringfield('username',validators=[datarequired()])

password=passwordfield('password',validators=[datarequired(),length(8,128)])

remember=booleanfield('remember me')

submit = submitfield('log in')

from flask import  flask,render_template

from demo1.form.forms import loginform

def basic():

form = loginform()

return render_template('basic.html',form=form)

if __name__=='__main__':

效果:

知識擴充套件:

在建立html表單時,我們經常會需要使用html元素的其他屬性來對字段進行設定。比如新增class屬性設定對應的css類為字段新增樣式;

新增placeholder屬性設定佔位文字。預設情況下,wtforms輸出的字段html**只會包含id和name屬性,屬性值均為表單類中對應的字段屬性名稱。

如果要新增額外的屬性,通常有兩種方法。

1.使用render_kw屬性

username = stringfield('

username

', render_kw=)

這個欄位被呼叫後輸出的html**如下所示:

2.在呼叫欄位時傳入

在呼叫字段屬性時,通過新增括號使用關鍵字引數的形式也可以傳入字段額外的html屬性:

form.username(style='width:200px;',class_='bar')

輸出的html**如下所示:

u'注意:

class是python的保留關鍵字,在這裡我們使用class_來代替class,渲染後的會獲得正確的class屬性,在模板中呼叫時

則可以直接使用class

通過上面的方法也可以修改id和name的屬性,但表單被提交後,wtforms需要通過name屬性來獲取對應的資料,所以不能

修改name屬性值。

修改後的

forms.py

username=stringfield('

username

',render_kw=,validators=[datarequired()])

修改後的basic.html

"stylesheet

" href="

">"

en">

class="

container

" >

效果:

使用Flask WTF來處理表單

在flask中,為了處理web表單,一般使用flask wtf擴充套件,它封裝了wtfforms,並且有驗證表單資料的功能。可以使用flash訊息閃回把訊息傳給模板 from flask import flask,render template,request,flash cwtnice 目的,實現...

Flask WTF 入門使用P1

flask wtf為您的flask應用程式整合了wtforms,具體例子如下 from flask wtf import flaskform from wtforms import stringfield from wtforms.validators import datarequired cla...

使用flask wtf 的 csrf時的bug問題

之前接收乙個老專案,版本迭代的時候,發現了乙個問題,使用者在登出的時候,再次登入時,報400錯誤,the csrf session token is migging.查了查 才發現問題。這個flask專案是用flask wtf的csrf 建立的csrf token的時候,建立乙個csrf token...