使用Flask WTF來處理表單

2021-10-05 10:35:14 字數 3694 閱讀 4422

在flask中,為了處理web表單,一般使用flask-wtf擴充套件,它封裝了wtfforms,並且有驗證表單資料的功能。

可以使用flash訊息閃回把訊息傳給模板

from flask import flask, render_template, request, flash

'cwtnice'

'''目的,實現乙個簡單的登入的邏輯處理

1.路由需要有get和post -->需要判斷請求方式

2.獲取請求的引數

3.判斷引數是否填寫&密碼是否相同,沒有問題就返回乙個success

flash用於給模板傳遞訊息 -->需要加密,需要設定secret_key做加密訊息的混淆

'''(

'/', methods=

['get'

,'post'])

defindex()

:# request:請求物件 -->獲取請求方式,資料

if request.method ==

'post'

: username = request.form.get(

'username'

) password = request.form.get(

'password'

) password2 = request.form.get(

'password2')if

notall

([username, password, password2]):

# print('引數不完整!')

flash(

u'引數不完整!'

)elif password != password2:

# print('兩次密碼不相同!')

flash(

u'兩次密碼不相同!'

)else

:return

'success'

return render_template(

'index.html'

)if __name__ ==

'__main__'

:)

index.html:

doctype

html

>

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

head

>

>

method

="post"

>

>

使用者名稱:label

>

type

="text"

name

="username"

>

>

>

密碼:label

>

type

="password"

name

="password"

>

>

>

確認密碼:label

>

type

="password"

name

="password2"

>

>

type

="submit"

value

="提交"

>

>

}form

>

>

body

>

html

>

from flask import flask, render_template, request, flash

from flask_wtf import flaskform

from wtforms import stringfield, passwordfield, submitfield

#匯入驗證函式

from wtforms.validators import datarequired, equalto

'cwtnice'

'''使用wtf實現表單

自定義表單類

'''class

loginform

(flaskform)

: username = stringfield(

'使用者名稱:'

, validators=

[datarequired()]

) password = passwordfield(

'密碼:'

, validators=

[datarequired()]

) password2 = passwordfield(

'確認密碼:'

, validators=

[datarequired(

), equalto(

'password'

,'兩次密碼不一致!')]

) submit = submitfield(

'提交')(

'/', methods=

['get'

,'post'])

deflogin()

: login_form = loginform(

)if request.method ==

'post'

: username = request.form.get(

'username'

) password = request.form.get(

'password'

) password2 = request.form.get(

'password2'

)#驗證,wtf一句話實現所有的校驗

#csrf_token

if login_form.validate_on_submit():

print

(username, password)

return

'success'

else

: flash(

'引數有誤!'

)return render_template(

'index.html'

, login_form=login_form)

if __name__ ==

'__main__'

:)

index.html:

doctype

html

>

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

head

>

>

method

="post"

>

}}}

>

}} >

}} >}}

form

>

body

>

html

>

Flask WTF處理表單

encoding utf 8 from flask import flask from flask import flash from flask import url for from flask import render template from flask wtf.csrf import ...

flask 使用Flask WTF處理表單

我的理解是flask wtf與html檔案的關係就如同sqlalchemy與資料庫之間的關係。通過python form類,生成html 並在html模板檔案中通過 變數的方式引用這些生成的html 好處就是可以使用python類管理html的表單,而不需要自己去敲html flask wtf fl...

表單處理Flask WTF 三

表單域是可呼叫的,呼叫時從模板渲染它們到html。假設檢視函式傳遞乙個引數名為form的nameform例項給模板,模板就會生成乙個簡單的html表單,如下所示 為了改變表單的外觀顯示,任何傳送給該表單域的引數會被轉換為html表單域屬性 例如,你可以給定表單域id或class屬性,然後定義css樣...