flask 上下文的實現

2021-09-19 10:08:44 字數 990 閱讀 8481

本文使用flask 0.5 版本

request context

request

gsession

request 指的是每次http請求發生時,wsgi server(比如gunicorn)呼叫flask.__call__()之後,在flask物件內部建立的request物件;

下面通過原始碼了解一下flask如何實現這兩種context:

# **摘選自flask 0.5 中的ctx.py檔案, 進行了部分刪減

class _requestcontext(object):

self.g = _requestglobals()

flask使用_requestcontext的**如下:

class flask(object):

def request_context(self, environ):

return _requestcontext(self, environ)

flask類中,每次請求都會呼叫這個request_context函式。這個函式則會建立乙個_requestcontext物件。

request_class = request # request 是乙個類,定義如下:

class request(requestbase):

...

到這裡想必已經很清楚了:

flask每響應乙個http請求,就會建立乙個request物件,這個request物件對應的上下文,就是request context

Flask中的上下文

上下文 相當於乙個容器,儲存了 flask 程式執行過程中的一些資訊。flask中有兩種上下文,請求上下文和應用上下文 在 flask 中,可以直接在檢視函式中使用 request 這個物件進行獲取相關資料,而 request 就是請求上下文的物件,儲存了當前本次請求的相關資料,請求上下文物件有 r...

Flask 的上下文物件

上下文 相當於乙個容器,儲存了flask程式執行過程中的一些資訊。flask中有兩種上下文,請求上下文和應用上下文。request和session都屬於請求上下文物件。request 封裝了http請求的內容,針對的是http請求。舉例 user request.args.get user 獲取的是...

flask之請求上下文

第一階段 將ctx request,session 放到local物件上 第二階段 檢視函式匯入 request session request.method localproxy物件.method,執行getattr方法,getattr self.get current object name s...