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