- current_app
- 類型:用用上下文的代理對象
- 主要用途:提供對當(dāng)前激活的Flask應(yīng)用實例的訪問。通常訪問應(yīng)用配置,注冊的藍圖,應(yīng)用級別的數(shù)據(jù)等等
- 使用場景:在視圖函數(shù),錯誤處理器或者其他任何需要訪問應(yīng)用配置和屬性的地方
- 實際數(shù)據(jù)實例:‘current_app.config[‘DEBUG’]’可以獲取當(dāng)前應(yīng)用的調(diào)試模式的狀態(tài)
- ‘g’
- 類型:應(yīng)用上選文的全局變量
- 主要用途:在一次請求的生命周期內(nèi)存儲和共享數(shù)據(jù)?!痝‘可以被用來保存數(shù)據(jù)庫連接,用戶認證信息等跨函數(shù)調(diào)用的臨時數(shù)據(jù)
- 使用場景:在處理一個請求得分時候,用于在視圖函數(shù),模板以及請求鉤子之間共享數(shù)據(jù)
- 實際數(shù)據(jù)實例:在請求開始時設(shè)置’g.user=get_current_user()‘,然后再后續(xù)的視圖函數(shù)或者模板中使用’g.user‘來訪問當(dāng)前用戶的信息。
- request
- 類型:請求上下文的代理對象
- 主要用途:封裝了客戶端發(fā)起的http請求的所有的數(shù)據(jù),包括URL,METHOD等
- 使用場景:再視圖函數(shù)中處理和響應(yīng)客戶的請求時候,訪問請求數(shù)據(jù)
- 實際數(shù)據(jù)實例:“request.from”
- session
- 類型:請求上下文的字典對象
- 主要用途:允許跨請求保持信息?;诳蛻舳说腸ookie實現(xiàn),可用于存儲用戶會話數(shù)據(jù),比如登錄狀態(tài),用戶偏好設(shè)置等
- 使用場景:再用戶登錄流程中存儲用戶身份信息,以及跨頁面請求保持用戶狀態(tài)
- 實際數(shù)據(jù)實例:“session[‘user_id’] = 2”存儲再當(dāng)前登錄用戶的ID,用戶跨請求識別用戶
- 區(qū)別和選擇場景使用
- 請求獨立性:’request‘和’session‘都是請求范圍的,但是’‘session’可以跨請求保持狀態(tài),而request只與當(dāng)前請求有關(guān)。
- 數(shù)據(jù)共享:‘g’用于再處理當(dāng)個請求的不同階段共享數(shù)據(jù),而‘current_app’提供了一個接口來訪問和操作應(yīng)用級別的資源和配置
- 生命周期:‘current_app’和‘g’屬于應(yīng)用上下文,與應(yīng)用生命周期想匹配;‘request’和‘session’屬于請求上下文,更短暫,但是‘session’數(shù)據(jù)再客戶端持久化,能夠跨請求保留
- g不是只處理當(dāng)前請求的一寫全局變量的數(shù)據(jù)嗎?為什么會是應(yīng)用上下文呢?
- g的用途
- 請求級別的存儲:‘g’確實時用來在一個請求的生命周期內(nèi)存儲和共享數(shù)據(jù),他為當(dāng)前請求提供了一個臨時存儲,每次請求開始的時候清空,請求結(jié)束的時候銷毀,這使得‘g’成為了在處理特定請求的不同部分之間共享數(shù)據(jù)的理想選擇
- g和應(yīng)用上下文
- 生命周期管理:盡管‘g’是按照請求生命周期管理 的,他任然是在應(yīng)用上下文中被創(chuàng)建和銷毀的。這是因為flask使用上下文局部對象來讓特定的變量在一個線程中全局可以訪問,而不會影響到其他的線程?!甮’對象就是這樣一個上下文局部對象,他依賴于應(yīng)用上下文的激活來確定其作用范圍
- 技術(shù)實現(xiàn)的角度:從技術(shù)實現(xiàn)的角度看,‘g’對象被設(shè)計為隨著應(yīng)用上下文而存在,盡管他的內(nèi)容和生命周期是按請求來管理的。這意味著,即使‘g’用于存儲請求級別的數(shù)據(jù),他的存在任然依賴于當(dāng)前的應(yīng)用上下文
- 問什么這樣設(shè)計
- 這種設(shè)計允許‘g’在單個請求處理過程中全局可訪問,而不需要開發(fā)者手動傳遞他,同時將‘g’的生命周期綁定到應(yīng)用上下文有助于在使用多線程模式或多進程模式的時候,保持?jǐn)?shù)據(jù)的隔離和線程安全。
- g的用途
文章來源地址http://www.zghlxwxcb.cn/news/detail-841126.html
文章來源:http://www.zghlxwxcb.cn/news/detail-841126.html
到了這里,關(guān)于【Python】Flask上下文管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!