Flask 激發(fā)請求發(fā)送前后的調用

2021-08-10 18:05 更新

僅僅創(chuàng)建一個請求上下文,您仍然不能運行請求發(fā)送前通常會運行的代碼。 如果您在將連接數(shù)據(jù)庫的任務分配給發(fā)送請求前的函數(shù)調用,或者在當前 用戶并沒有被儲存在 g 對象里等等情況下,您可能無法 訪問到數(shù)據(jù)庫。

您可以很容易的自己完成這件事,僅僅手動調用 preprocess_request() 函數(shù)即可:

>>> ctx = app.test_request_context()
>>> ctx.push()
>>> app.preprocess_request()

請注意, preprocess_request() 函數(shù)可能會返回 一個響應對象。這時,忽略它就好了。

要關閉一個請求,您需要在請求后的調用函數(shù)(由 process_response() 函數(shù)激發(fā))運行之前耍一些小小的把戲:

>>> app.process_response(app.response_class())
<Response 0 bytes [200 OK]>
>>> ctx.pop()

被注冊為 teardown_request() 的函數(shù)將會在 上下文環(huán)境出棧之后自動執(zhí)行。所以這是用來銷毀請求上下文(如數(shù)據(jù)庫 連接等)資源的最佳地點。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號