python flask表單語法 Flask表單

2021-10-13 05:58:51 字數 3488 閱讀 3772

6.4 表單

使用flask-wtf表單擴充套件,可以幫助進行csrf驗證,幫助我們快速定義表單模板,而且可以幫助我們在檢視中驗證表的資料

pip install flask-wtf

6.4.1 不使用flask-wtf擴充套件時,表單需要自己處理

#模板檔案

from flask importflask,render_template,request

username= request.form['username']

password= request.form['password']printusername,passwordreturn「success」else:return render_template(「login.html」)

6.4.2 使用flask-wtf擴充套件

需要設定 secret_key 的配置引數,前端設定csrf_token

模板頁:

# 設定csrd_token}}

} } }}

} }} }

}檢視函式

#coding:utf-8

from flask importflask, render_template, redirect, url_for, sessionfrom flask_wtf importflaskformfrom wtforms importstringfield, passwordfield, submitfieldfrom wtforms.validators importdatarequired, equalto

#定義表單的模型類

classregisterform(flaskform):"""自定義的登錄檔單模型類"""

#名字 驗證器/驗證器

#datarequired 保證資料必須填寫,並且不能為空

user_name = stringfield(label=u"使用者名稱", validators=[datarequired(u"使用者名稱不能為空")])

password= passwordfield(label=u"密碼", validators=[datarequired(u"密碼不能為空")])

password2= passwordfield(label=u"確認密碼", validators=[datarequired(u"確認密碼不能為空"),

equalto("password", u"兩次密碼不一致")])

submit= submitfield(label=u"提交")

form =registerform()#判斷form中的資料是否合理

#如果form中的資料完全滿足所有的驗證器,則返回真,否則返回假

ifform.validate_on_submit():#表示驗證合格

#提取資料

uname =form.user_name.data

pwd=form.password.data

pwd2=form.password2.dataprint(uname, pwd, pwd2)

session["user_name"] =unamereturn redirect(url_for("index"))return render_template("register.html", form=form)

6.5.1 if語句

6.5.2 for語句

6.6.1 不帶引數巨集的定義與使用

定義:name="username"

value=""

size="30"/>使用}

6.6.2 帶引數巨集的定義與使用

定義name="}"

value="}"

size="}"/>使用}

6.6.3 將巨集單獨封裝在html檔案中

檔名可以自定義macro.html

在其它模板檔案中先導入,再呼叫

6.4 模板繼承

父模板:base.html

頂部選單

底部子模板:

需要填充的內容

模板繼承使用時注意點:

不支援多繼承。

為了便於閱讀,在子模板中使用extends時,盡量寫在模板的第一行。

不能在乙個模板檔案中定義多個相同名字的block標籤。

當在頁面中使用多個block標籤時,建議給結束標籤起個名字,當多個block巢狀時,閱讀性更好。

6.5 模板包含

jinja2模板中,除了巨集和繼承,還支援一種**重用的功能,叫包含(include)。它的功能是將另乙個模板整個載入到當前模板中,並直接渲染。

示例:include的使用

包含在使用時,如果包含的模板檔案不存在時,程式會丟擲templatenotfound異常,可以加上ignore missing關鍵字。如果包含的模板檔案不存在,會忽略這條include語句。

示例:include的使用加上關鍵字ignore missing

巨集、繼承、包含:

巨集(macro)、繼承(block)、包含(include)均能實現**的復用。

繼承(block)的本質是**替換,一般用來實現多個頁面中重複不變的區域。

巨集(macro)的功能類似函式,可以傳入引數,需要定義、呼叫。

包含(include)是直接將目標模板檔案整個渲染出來。

6.6 flask在模板中使用特殊變數和方法

6.6.1 config

}6.6.2 request

就是 flask 中表示當前請求的 request 物件,request物件中儲存了一次http請求的一切資訊。

6.6.3 url_for

request常用的屬性如下:

屬性說明型別

data

記錄請求的資料,並轉換為字串

form

記錄請求中的表單資料

multidict

args

記錄請求中的查詢引數

multidict

cookies

記錄請求中的cookie資訊

dict

headers

記錄請求中的報文頭

environheaders

method

記錄請求使用的http方法

get/post

url記錄請求的url位址

string

files

記錄請求上傳的檔案

}6.6.3 url_for}}

6.6.4 get_messages  (閃現)

get_flashed_messages方法:

返回之前在flask中通過 flash() 傳入的資訊列表。把字串物件表示的訊息加入到乙個訊息佇列中,然後通過呼叫 get_flashed_messages() 方法取出。

}from flask importflask, render_template, flash

flash("hello1")

flash("hello2")

flash("hello3")globalflag

flag=falsereturn render_template("index.html")

}

python Flask 擴充套件

flask有兩大核心 werkzeug和jinja2。werkzeug實現路由 除錯和web伺服器閘道器介面。jinja2實現了模板。flask框架是以werkzeug為基礎實現的。werkzeug是乙個遵循wsgi協議的python函式庫。其內部實現了很多web框架底層的東西,比如request和...

03 HTML語法 表單

表單的基本介紹 表單是一種結構,用來在網際網路上收集使用者資訊,在html當中事先定義好乙個標籤來完成這件事,標籤名叫做form,它是乙個雙標籤。action和method是form的兩個是屬性 預設情況下 form只是宣告當前結構只是乙個表單,但是它裡面不存在任何的供使用者去輸入的方框。看起來就是...

起步,Python Flask記錄

首次寫部落格,主要為記錄一下這幾天來一直在學習的乙個python的框架flask。安裝flask需要用到pip或easy install 可選擇是否使用virtuanlenv安裝框架,這種安裝方式需要每次啟動時,都要進入python虛擬環境中。用命令 pip install virtualenv 安...