1. 請求上下文
1.1 request請求上下文
request請求體上下文在django和flask的視圖函數(shù)中是有區(qū)別的
django視圖函數(shù)中要填寫request請求體,每個客戶端的請求是很明確的
flask中的request是一個全局變量,每個client請求都是一個flask線程,多個請求的多個線程都可以使用全局的request。這是通過線程id去區(qū)分具體是哪一個client連接,每進來一個新的請求,flask會把新的請求信息帶上線程id 加入到全局的request中

1.2 session上下文
筆記中的session其實也是一種請求上下文
2. 應用上下文:current_app和g
current_app和g都屬于應用上下文對象
區(qū)別:
current_app:表示當前運行程序文件的程序?qū)嵗?,只要flask后臺程序不停止,都一直存在
g:處理單個請求時,用于臨時存儲的對象,每次請求都會重設(清空)這個變量,相當于單詞請求的全局變量。方便函數(shù)之間少傳遞參數(shù)
3. 請求鉤子
request hook是針對單個請求的生命周期而言的,通過裝飾器實現(xiàn)
@app.before_first_request()
@app.before_request()
@app.after_request(response)
@app.teardown_request(response) 工作在debug = False時生效

示例代碼一

接示例代碼一
request hook 默認會在頁面的所有視圖中都生效,作用于單次請求,如果只是應用到多個視圖的某一個或一些視圖上,需要在鉤子函數(shù)中做條件判斷:

示例代碼二