flask web框架學習(五 請求鉤子與上下文)

2021-10-05 05:32:06 字數 2361 閱讀 5810

請求鉤子是通過裝飾器的形式實現,flask支援如下四種請求鉤子:

from flask import flask, request, url_for

# 在第一次請求之前呼叫,可以在此方法內部做一些初始化操作

defbefore_first_request()

:print

("第一次請求之前呼叫:before_first_request"

)

# 在每一次請求之前呼叫,這時已經有請求了,可以在這個方法裡面做請求的校驗

# 如果請求的校驗不成功,可以直接在此方法中進行響應,直接return之後那麼就不會執行檢視函式

defbefore_request()

:"""在每次請求之前都被執行"""

print

("在每次請求之前都被執行:before_request"

)# if 請求不符合條件:

# return "內容"

# 在執行完檢視函式之後會呼叫,並且會把試圖函式所生成的響應傳入,可以在此方法中對響應做最後一步處理

defafter_request

(response)

:print

("after_request"

) response.headers[

"content-type"]=

return response

def

handle_teardown_request

(response)

:"""在每次請求 (檢視函式處理)之後都被執行,

無論檢視函式是否出現異常,都被執行,

工作在非除錯模式時 debug=false

"""path = request.path

if path == url_for(

"index"):

print

("在請求鉤子中判斷請求的檢視邏輯: index"

)elif path == url_for(

"hello"):

print

("在請求鉤子中判斷請求的檢視邏輯: hello"

)print

("teardown_request 被執行"

示例

# 以redis客戶端物件為例

# 用字串表示建立的redis客戶端

'/route11'

)def

route11()

:'/route12'

)def

route12()

:'/route21'

)def

route21()

:'/route22'

)def

route22()

:"""

ps 以下是通過終端命令執行

執行flask run

flask run

from flask import flask, g

defdb_query()

: user_id = g.user_id

user_name = g.user_name

print

('user_id={} user_name={}'

.format

(user_id, user_name)

)'/'

)def

get_user_profile()

: g.user_id =

123 g.user_name =

'itcast'

db_query(

)return

'hello world'

Flask Web學習筆記(五)

heroku官網 ps 建議用微軟的outlook郵箱和gmail郵箱去註冊 在 基於python的web應用開發實戰 這本書,裡面提及到 heroku toolbelt實際上裝了兩個工具 heroku客戶端和foreman工具,但其實 沒有foreman工具。安裝完heroku toolbelt之...

Flask web開發 處理Ajax請求

本文介紹如何處理ajax請求,一 處理ajax的post請求 舉例一 js 舉例如下 var id obj.parentnode.parentnode.id post delitem id,function data json 對應的flask 舉例如下 delitem methods post d...

flask web學習記錄(3)

這次學的是表單。需要安裝乙個flask wtf 設定 x為密匙,越不好猜越好,是需要設定的 定義表單類 例子定義了乙個使用者名稱 乙個密碼還有乙個提交按鈕。from wtforms import stringfield,submitfield,passwordfield from wtforms.v...