我的理解是flask-wtf與html檔案的關係就如同sqlalchemy與資料庫之間的關係。
通過python form類,生成html**,並在html模板檔案中通過}變數的方式引用這些生成的html**
好處就是可以使用python類管理html的表單,而不需要自己去敲html**
flask-wtf
flask的處理機制:
例項:
basic.html
doctype htmlforms.py>
<
html
lang
="en"
>
<
head
>
<
meta
charset
="utf-8"
>
<
title
>title
title
>
head
>
<
body
>
<
form
method
="post"
>
} }}
<
br>
}}<
br>
}}<
br>
}<
br>
form
>
body
>
html
>
from flask_wtf import flaskformfrom 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('這個欄位被呼叫後輸出的html**如下所示:username
', render_kw=)
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('修改後的basic.htmlusername
',render_kw=,validators=[datarequired()])
"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...