map(['/' (get, head, options) -> index>,
'/static/' (get, head, options) -> static>,
'/user/' (get, head, options) -> user>])
url 對映中head、options、get
是請求方法,由路由進行處理。flask
為每個路由都指定了請求方法,這樣不同的請求方法傳送到相同的 url 上時,會使用不同的檢視函式進行處理。head
和options
方法由flask
自動處理。
有時在處理請求之前或之後執行**會很有用。例如,在請求開始時,我們可能需要建立資料庫連線或認證發起請求的使用者。為了避免在每個檢視函式中都使用重複的**, flask 提供了註冊通用函式的功能, 註冊的函式可在請求被分發到檢視函式之前或之後呼叫。
請求鉤子使用裝飾器實現,flask 支援以下4中鉤子
在請求鉤子函式和檢視函式之間共享資料一般使用上下文全域性變數g
。 例如,before_request
處理程式可以從資料庫中載入已登入使用者, 並將其儲存到g.user
中。隨後呼叫檢視函式時, 檢視函式再使用g.user
獲取使用者。
flask 呼叫檢視函式後,會將其返回值作為響應的內容。大多數情況下,響應就是乙個簡單的字串,作為 html 頁面回送客戶端。
但 http 協議還需要返回 狀態碼, flask 預設設為 200, 這個**表明請求已經被成功處理。如果檢視函式返回的響應需要使用不同的狀態碼, 那麼可以把數字**作為第二個返回值, 新增到響應文字之後:
defindex
():return
'', 400
flask 檢視函式還可以返回response物件。 make_response() 函式可以接收 1個、2個或3個引數,並返回乙個 response 物件。下例建立了乙個響應物件,然後設定了 cookie:
from flask import make_response
defindex
(): response = make_response('')
response.set_cookie('answer', '42')
return response
flask
提供了redirect()
輔助函式,用以生成這種響應:
from flask import redirect
defindex
():return redirect('')
還有一種處理錯誤的特殊響應,由abort
函式生成,在下面例子中,如果 url 中的動態引數id
對應的使用者不存在,就返回狀態碼404
:
from flask import abort
defget_user
(id):
user = load_user(id)
ifnot user:
abort(404)
return
'' % user.name
abort
不會把控制權交還給呼叫它的函式,而是丟擲異常把控制權交給 web伺服器。 Flask 請求響應迴圈
避免大量重複引數的訪問導致檢視函式 重複 亂的問題,flask使用上下文是一些變數再乙個執行緒中全域性可訪問,不會干擾其他執行緒。變數名上下文 說明程式上下文 當前啟用程式的程式例項 g程式上下文 處理請求時用於臨時儲存的物件,每次請求會重設g request 請求上下文 請求物件,封裝了http請...
Flask框架 03 請求與響應
服務端在接收到客戶端的請求後,會自動建立request物件 由flask框架建立,requesy物件不可修改 屬性 base url 去掉get引數的url host url 只有主機和埠號的url path 路由中的路徑 method 請求方法 args get請求引數 form post請求引數...
Flask請求物件 響應物件
form 乙個字典,儲存了請求提交的所有表單字段 args 乙個字典,儲存了url查詢字串傳遞的所有引數 values 乙個字典,form和args集合 cookies 字典,儲存了所有cookie headers 字典,儲存了請求http頭部 files 字典,儲存所有上傳的檔案 get data...