Flask之上下文(context)

2022-09-09 05:00:19 字數 1721 閱讀 6707

執行上下文:即語境,語意,在程式中可以理解為在**執行到某一行時,根據之前**所做的操作以及下文即將要執行的邏輯,可以決定在當前時刻下可以使用到的變數,或者可以完成的事情。

flask中上下文物件:相當於乙個容器,儲存了 flask 程式執行過程中的一些資訊[變數、函式、類與物件等資訊]。

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

在 flask 中,可以直接在檢視函式中使用request這個物件進行獲取相關資料,而request就是請求上下文的物件,儲存了當前本次請求的相關資料,請求上下文物件有:

session

# 編寫路由檢視

def index():

# 請求上下文提供的變數/屬性/方法/函式/類與物件,只能在檢視中或者被檢視呼叫的地方使用

# 請求上下文裡面資訊**於每次客戶端的請求,所以每個檢視中請求上下文的資訊都不一樣

print(request) # print(session) # return "hello world!"

if __name__ == '__main__':

注意:請求上下文提供的變數/屬性/方法/函式/類與物件,只能在檢視中或者被檢視呼叫的地方使用

應用上下文物件有:

g# 宣告和載入配置

class config():

debug = true

# 編寫路由檢視

def index():

# 應用上下文提供給我們使用的變數,也是只能在檢視或者被檢視呼叫的地方進行使用,

""""""

map([index>,

' (get, options, head) -> static>])

"""return "hello world!"

if __name__ == '__main__':

g 作為 flask 程式全域性的乙個臨時變數,充當者中間媒介的作用,我們可以通過它傳遞一些資料,g 儲存的是當前請求的全域性變數,不同的請求會有不同的全域性變數,通過不同的thread id區別

g.name='abc' # name是舉例,實際要儲存什麼資料到g變數中,可以根據業務而定,你可以任意的資料進去
注意:不同的請求,會有不同的全域性變數g

# 宣告和載入配置

class config():

debug = true

def before_request():

g.name = "root"

def get_two_func():

name = g.name

print("g.name=%s" % name) # g.name=root

def get_one_func():

get_two_func()

# 編寫路由檢視

def index():

# 應用上下文提供給我們使用的變數,也是只能在檢視或者被檢視呼叫的地方進行使用,

get_one_func()

return "hello world!"

if __name__ == '__main__':

魔術方法之上下文管理

檔案io操作可以對檔案物件使用上下文管理,使用with as語法。with open test as f pass仿照上例寫乙個自己的類,實現上下文管理 classa pass with a as f attributeerror enter pass提示屬性錯誤,沒有 enter 看來需要這個類屬...

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...