request物件和flask模組
阿新 • • 發佈:2018-11-24
裝飾器路由具體實現梳理
Flask有兩大核心:Werkzeug和Jinja2
- Werkzeug實現路由、除錯和Web伺服器閘道器介面 - Jinja2實現了模板。
Werkzeug是一個遵循WSGI協議的python函式庫
- 其內部實現了很多Web框架底層的東西,比如request和response物件;
-與WSGI規範的相容;支援Unicode;
- 支援基本的會話管理和簽名Cookie;
- 整合URL請求路由等。
Werkzeug庫的 routing 模組負責實現 URL 解析。不同的 URL 對應不同的檢視函式,routing模組會對請求資訊的URL進行解析,匹配到URL對應的檢視函式,執行該函式以此生成一個響應資訊。
routing模組內部有:
- Rule類
-
- 用來構造不同的URL模式的物件,路由URL規則
- Map類
-
- 儲存所有的URL規則和一些配置引數
- BaseConverter的子類
-
- 負責定義匹配規則
- MapAdapter類
-
- 負責協調Rule做具體的匹配的工作
request物件
request 就是flask中代表當前請求的 request 物件,其中一個請求上下文變數(理解成全域性變數,在檢視函式中直接使用可以取到當前本次請求)
常用的屬性如下:
屬性 | 說明 | 型別 |
---|---|---|
data | 記錄請求的資料,並轉換為字串 | * |
form | 記錄請求中的表單資料 | MultiDict |
args | 記錄請求中的查詢引數 | MultiDict |
cookies | 記錄請求中的cookie資訊 | Dict |
headers | 記錄請求中的報文頭 | EnvironHeaders |
method | 記錄請求使用的HTTP方法 | GET/POST |
url | 記錄請求的URL地址 | string |
files | 記錄請求上傳的檔案 | * |