Flask使用上下文讓特定的變量在一個線程中全局可訪問(例如:我們把request
當(dāng)作全局變量使用,事實上,request
不可能是全局變量知押。試想,在多線程服務(wù)器中鹃骂,多個線程同時處理不同客戶端的不同請求時台盯,沒個線程看到的request
對象必然不同),于此同時卻不會干擾其他的線程畏线;
在Flask中有兩種上下文:程序上下文和請求上下文;
Flask上下文全局變量
變量名 | 上下文 | 說明 |
---|---|---|
current_app | 程序上下文 | 當(dāng)前激活程序的程序?qū)嵗?/td> |
g | 程序上下文 | 處理請求時用作臨時存儲的對象静盅。每次請求都會重設(shè)這個變量 |
request | 請求上下文 | 請求對象,封裝了客戶端發(fā)出的HTTP請求內(nèi)容 |
session | 請求上下文 | 用戶會話象踊,用于存儲請求之間需要“記住”的值的詞典 |
Flask在分發(fā)請求之前激活程序和請求上下文温亲,請求處理完成后再將其刪除棚壁。程序上下文被激活后,就可以在線程中使用current_app
和g
變量栈虚。類似袖外,請求上下文被激活后,就可以使用request
和session
變量魂务;
下面通過python shell演示:
from hello import app
from flask import current_app
# 激活上下文
app_ctx = app.app_context()
app_ctx.push()
print current_app.name
# 刪除上下文
app_ctx.pop()