Flask 應(yīng)用上下文

2021-06-25 10:58 更新

0.9 新版功能.

Flask 背后的設(shè)計(jì)理念之一就是,代碼在執(zhí)行時(shí)會(huì)處于兩種不同的“狀態(tài)”(states)。 當(dāng) ?Flask? 對(duì)象被實(shí)例化后在模塊層次上應(yīng)用便開(kāi)始隱式地處于應(yīng)用配置狀 態(tài)。一直到第一個(gè)請(qǐng)求還是到達(dá)這種狀態(tài)才隱式地結(jié)束。當(dāng)應(yīng)用處于這個(gè)狀態(tài)的時(shí)候 ,你可以認(rèn)為下面的假設(shè)是成立的:

  • 程序員可以安全地修改應(yīng)用對(duì)象
  • 目前還沒(méi)有處理任何請(qǐng)求
  • 你必須得有一個(gè)指向應(yīng)用對(duì)象的引用來(lái)修改它。不會(huì)有某個(gè)神奇的代理變量指向 你剛創(chuàng)建的或者正在修改的應(yīng)用對(duì)象的

相反,到了第二個(gè)狀態(tài),在處理請(qǐng)求時(shí),有一些其它的規(guī)則:

  • 當(dāng)一個(gè)請(qǐng)求激活時(shí),上下文的本地對(duì)象( ?flask.request? 和其它對(duì)象等) 指向當(dāng)前的請(qǐng)求
  • 你可以在任何時(shí)間里使用任何代碼與這些對(duì)象通信

這里有一個(gè)第三種情況,有一點(diǎn)點(diǎn)差異。有時(shí),你正在用類(lèi)似請(qǐng)求處理時(shí)方式來(lái) 與應(yīng)用交互,即使并沒(méi)有活動(dòng)的請(qǐng)求。想象一下你用交互式 Python shell 與應(yīng)用 交互的情況,或是一個(gè)命令行應(yīng)用的情況。

?current_app? 上下文本地變量就是應(yīng)用上下文驅(qū)動(dòng)的。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)