應用上下文和請求上下文分別交給兩個不同的localstack物件,類似棧的localstack有push,top,pop三個方法,再呼叫push將它們加到local中,__storage__=
執行檢視函式,檢視函式通過localproxy執行localstack的top方法,拿到資料
最後執行pop方法,刪除上下文
request 在每次http請求時,wsgi呼叫flask__call__(), 然後在flask內部建立request物件
傳入檢視
幾點說明:
請求上下文:儲存了客戶端和服務端的互動資料, 臨時把某些物件變為全域性可訪問
應用上下文:在flask程式執行過程中,儲存一些配置資訊,如程式檔名,資料庫連線, 它的作用是幫助request獲取當前的應用,它是伴request生, 隨request而滅的。
為每個執行緒開闢乙個空間,類似於thread.local作用,不過它更高階,還支援協程
把local的值維護成棧,起到執行緒隔離的作用
每次執行request.xx時,會觸發localproxy的__getattr__等方法,由方法每次動態使用localproxy去local獲取資料
我的個人理解就是,乙個python檔案,直接執行,不需要先執行,再用瀏覽器訪問url觸發函式
flask 上下文的實現
本文使用flask 0.5 版本 request context request gsession request 指的是每次http請求發生時,wsgi server 比如gunicorn 呼叫flask.call 之後,在flask物件內部建立的request物件 下面通過原始碼了解一下flas...
Flask中的上下文
上下文 相當於乙個容器,儲存了 flask 程式執行過程中的一些資訊。flask中有兩種上下文,請求上下文和應用上下文 在 flask 中,可以直接在檢視函式中使用 request 這個物件進行獲取相關資料,而 request 就是請求上下文的物件,儲存了當前本次請求的相關資料,請求上下文物件有 r...
Flask 的上下文物件
上下文 相當於乙個容器,儲存了flask程式執行過程中的一些資訊。flask中有兩種上下文,請求上下文和應用上下文。request和session都屬於請求上下文物件。request 封裝了http請求的內容,針對的是http請求。舉例 user request.args.get user 獲取的是...