Flask 激發(fā)請(qǐng)求發(fā)送前后的調(diào)用

2021-08-23 18:41 更新

僅僅創(chuàng)建一個(gè)請(qǐng)求上下文,您仍然不能運(yùn)行請(qǐng)求發(fā)送前通常會(huì)運(yùn)行的代碼。 如果您在將連接數(shù)據(jù)庫(kù)的任務(wù)分配給發(fā)送請(qǐng)求前的函數(shù)調(diào)用,或者在當(dāng)前 用戶(hù)并沒(méi)有被儲(chǔ)存在 ?g? 對(duì)象里等等情況下,您可能無(wú)法 訪問(wèn)到數(shù)據(jù)庫(kù)。

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

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

請(qǐng)注意, ?preprocess_request()? 函數(shù)可能會(huì)返回 一個(gè)響應(yīng)對(duì)象。這時(shí),忽略它就好了。

要關(guān)閉一個(gè)請(qǐng)求,您需要在請(qǐng)求后的調(diào)用函數(shù)(由 ?process_response()? 函數(shù)激發(fā))運(yùn)行之前耍一些小小的把戲:

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

被注冊(cè)為 ?teardown_request()? 的函數(shù)將會(huì)在 上下文環(huán)境出棧之后自動(dòng)執(zhí)行。所以這是用來(lái)銷(xiāo)毀請(qǐng)求上下文(如數(shù)據(jù)庫(kù) 連接等)資源的最佳地點(diǎn)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)