flask 的current_app


Flask 應用對象app具有config的屬性,這些屬性對於在視圖或者在命令調試中訪問很方便。但是現在項目的模塊導入app 實例會容易出現循環導入的問題

 

Flask 通過應用情景解決了這個問題,不是直接引用一個app,而是使用current_app 代理,該代理指向處理當前活動的應用;

 

應用情景是指,在上下文中訪問某些變量才有意義,在上下文外面訪問無效;如在路由外訪問current_app,會報runtimeError 錯

 

 

在路由中使用是正常的

 

 

flask 還有應用上下文,對Flask核心對象的封裝,提供了一些好用的方法,這樣上下文除了核心對象還可以包含其它的數據和操作;

請求上下文是對Request請求對象的封裝;

AppContext RequestContext,通過結構很方便查找到;

分別都實現了push和pop等方法;

app 和 Request() 對象只是其中的一個屬性;

應用上下文,獲取應用數據需要具備的環境;

請求上下文,獲取請求數據需要具備的環境;

 

在測試的時候,未在路由中使用app對象會報錯,但通過上下文獲取就可以。即AppContext 和 RequstContext 這兩個對象是通過current_app 和 request 獲取的;

 

例子,管理其它的數據和操作

 

 

 

 

上下文管理器用於解決外部環境依賴

如:在視圖函數里面獲取請求參數,有三種方法

1、直接傳遞參數

  

 

 

2、通過全局變量

  缺點:多個線程同時請求程序訪問這些變量時勢必會互相影響,但不設置為全局變量,那在編寫代碼時每次都要顯式滴傳遞這些變量也容易出錯

 

3、通過上下文來管理外部參數

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM