Flask 應(yīng)用上下文

2021-06-25 10:58 更新

0.9 新版功能.

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

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

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

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

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

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號