flask web development 閱讀筆記

在flask應用中,全部的flask應用都必須建立一個應用實例。web服務器把它接收的來自客戶端的請求經過WSGI的協議傳遞給這個對象以進行處理。這時候,它會提供一種叫上下文的神奇環境,它能讓一些對象能夠全局可見,這樣你的視圖函數就能夠去訪問這些對象作些處理,而又在同時有那麼多請求時確保線程安全。python

flask裏有兩種上下文,應用上下文和請求上下文,這兩種上下文裏暴露出了4種變量:web

應用上下文
flask

current_app 活動應用程序的應用實例

應用上下文安全

g 在處理請求時臨時存儲數據,每次請求都會被重設

請求上下文服務器

request request對象,封裝了客戶端發出的http請求的內容

請求上下文session

session 用來存儲值的字典,這些值在請求中是被記住的

flask在調度每一個請求前都會push這兩種上下文,而請求被處理後又被移除。應用上下文被push時它對應的兩個變量就能夠被線程訪問了,請求上下文也是同樣的道理。固然,假如這些上下文沒有被激活的話,訪問這些變量就會引起錯誤了。app

舉個例子:ide

>>>from flask import Flask, current_app
>>>app = Flask(__name__)
>>>current_app
Traceback (most recent call last):
...
RuntimeError: working outside of application context
>>>app_ctx = app.app_context()
>>>app_ctx.push()
>>>current_app.name
'__main__'
>>>app_ctx.pop()
相關文章
相關標籤/搜索