Flask使用上下文臨時(shí)把某些對象變?yōu)槿挚稍L問。有了上下文,就可以寫出下面的視圖函數(shù)。
Flask有兩種上下文:程序上下文和請求上下文
Flask在分發(fā)請求之前激活(或推送)程序和請求上下文,請求處理完成后再將其刪除。
程序上下文被推送后,就可以在線程中使用current_app和g變量。
請求上下文被推送后,就可以使用request和session變量
>>> from hello import app
>>> from flask import current_app>>> current_app.name
>>> current_app.name
Traceback (most recent call last):
...
RuntimeError: working outside of application context
>>> app_ctx = app.app_context()
>>> app_ctx.push()
>>> current_app.name
'hello'
>>> app_ctx.pop()
config
當(dāng)前的配置對象 (flask.config)
request
當(dāng)前的請求對象 (flask.request)。當(dāng)模版不是在活動(dòng)的請求上下文中渲染時(shí)這個(gè)變量不可用。
session
當(dāng)前的會(huì)話對象 (flask.session)。當(dāng)模版不是在活動(dòng)的請求上下文中渲染時(shí)這個(gè)變量不可用。
g
請求相關(guān)的全局變量 (flask.g)。當(dāng)模版不是在活動(dòng)的請求上下文中渲染時(shí)這個(gè)變量不可用。
url_for()
flask.url_for()函數(shù)
get_flashed_messages()
flask.get_flashed_messages()函數(shù)
上下文處理器:
上下文處理器是一個(gè)返回字典的函數(shù),這個(gè)字典的鍵值最終將傳入應(yīng)用中所有模板的上下文:
Flask 上下文處理器自動(dòng)向模板的上下文中插入新變量
上下文處理器在模板渲染之前運(yùn)行,并且可以在模板上下文中插入新值。