其實這篇可看也可以不看。先說一下django的MTV模型(為啥是django呢,因為我之前學的是django)。

MTV模型
所謂的MTV ( Model–Template–View ),翻譯一下就是模型、模闆、視圖。一般是使用者通過浏覽器向我們的伺服器發起一個請求(request),這個請求回去通路視圖函數,(如果不涉及到資料調用,那麼這個時候視圖函數傳回一個模闆也就是一個網頁給使用者),視圖函數調用模型,模型去資料庫查找資料,然後逐級傳回,視圖函數把傳回的資料填充到模闆中空格中,最後傳回網頁給使用者。
flask同樣也遵循這個MTV模型。使用者發起一個請求,flask調用視圖函數進行響應。
程式和請求上下文
Flask從用戶端收到請求時,要讓視圖函數能通路一些對象,這樣才能處理請求。Flask使用請求對象封裝了用戶端發送的HTTP請求,傳遞給視圖函數。
此外,Flask使用上下文臨時把某些對象變為全局可通路
上下文分為
程式上下文和
請求上下文請求排程
程式收到用戶端發來的請求時,需要找到處理該請求的視圖函數。Flask會在程式的URL映射中查找請求的URL。URL映射是URL和視圖函數之間的對應關系。Flask使用<u>app.route()</u>修飾器或非修飾器<u>app.add_url_rule()</u>生成映射。
請求鈎子
主要在處理請求之前或之後執行代碼時使用。請求鈎子使用修飾器實作
- before_first_request在處理第一個請求之前運作注冊的函數
- before_request 在每次請求前運作注冊的函數
- after_request 在每次請求之後運作未出錯的注冊函數
- teardown_request 在每次請求之後運作注冊函數,無視異常
響應
Flask調用視圖函數後,會将其傳回值作為響應的内容,狀态碼為200。
視圖函數傳回的響應可以接受三個參數,通常不用到第三個。
- 響應内容
- 狀态碼
-
header字典
例子如下:
@app.route('/')
def index():
return '<h1> Bad request </h1>', 400
此外還有重定向(redirect),特殊響應(abort)