Django — 請求及響應
阿新 • • 發佈:2021-11-01
- 請求是指瀏覽器通過HTTP協議傳送給伺服器端的資料
- 響應是指伺服器端接收到請求後做響應的處理後再回復給瀏覽器端的資料
請求中的方法
- 根據HTTP標準,HTTP請求可以使用多種請求方法。
- HTTP1.0定義了三種請求方法:GET,POST和HEAD方法 (最常用)
- HTTP1.1新增了五種請求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
序號 | 方法 | 描述 |
---|---|---|
1 | GET | 請求指定的頁面資訊,並返回實體主體。 |
2 | HEAD | 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取抱頭 |
3 | POST | 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改 |
4 | OPTIONS | 從客戶端向伺服器傳送的資料取代指定的文件的內容。 |
5 | PUT | 請求伺服器刪除指定的頁面。 |
6 | DELETE | HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。 |
7 | TRACE | 允許客戶端檢視伺服器的效能。 |
8 | CONNECT | 回顯伺服器收到的請求,主要用於測試或診斷。 |
Django中的請求
- 請求在Django中實則就是 檢視函式的第一個引數,即HttpRequest物件
- Django接收到http協議的請求後,會根據請求資料報文建立HttpRequest物件
- HttpRequest物件 通過屬性 描述了 請求的 所有相關資訊。
-
- path_info: URL字串
- method: 字串,表示HTTP請求方法,常用值:'GET'、'POST'
- GET: QueryDict查詢字典的物件,包含get請求方式的所有資料
- POST: QueryDict查詢字典的物件,包含post請求方式的所有資料
- FILES: 類似於字典的物件,包含所有的上傳檔案資訊。
- COOKIES:Python字典,包含所有的cookie,鍵和值都為字串
- session: 似於字典的物件,表示當前的會話
- body:字串,請求體的內容(POST或PUT)
- scheme: 請求協議('http' / 'https')
- request.get_full_path():請求的完整路徑
- request.META: 請求中的元資料(訊息頭)
- request.META['REMOTE_ADDR']:客戶端IP地址
響應
HTTP狀態碼的英文是HTTP Status Code
下面是常見的HTTP狀態碼:
- 200 - 請求成功
- 301 - 永久重定向-資源(網頁等)被永久轉移到其他URL
- 302 - 臨時重定向
- 404 - 請求的資源(網頁等)不存在
- 500 - 內部伺服器錯誤
HTTP狀態碼由三個十進位制數字組成,第一個十進位制數字定義了狀態碼的型別,後兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:
分類 | 分類描述 |
---|---|
1** | 資訊,伺服器收到請求,需要請求者繼續執行操作 |
2** | 成功,操作被成功接收並處理 |
3** | 重定向,需要進一步的操作以完成請求 |
4** | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
5** | 伺服器錯誤,伺服器在處理請求的過程中傳送了錯誤 |
Django中的響應物件
- 建構函式格式:
HttpResponse(content=響應體, content_type=響應體資料型別, status=狀態碼)
- 作用:
- 向客戶端瀏覽器返回響應,同時攜帶響應體內容。
- 引數:
- content:表示返回的內容
- status_code:返回的HTTP響應狀態碼(預設為200)。
- content_type:指定返回資料的MIME型別(預設為"text/html")。瀏覽器會根據這個屬性,來顯示資料。如果是text/html,那麼就會解析這個字串,如果text/plain,那麼就會顯示一個純文字。
- 常見的Content_Type如下:
- 'text/html' (預設的,html檔案)
- 'text/plain' (純文字)
- 'text/css' (css檔案)
- 'text/javascript' (js檔案)
- 'multipart/form-data' (檔案提交)
- 'application/json' (json傳輸)
- 'application/xml' (xml檔案)
- HttpResponse子類
型別 | 作用 | 狀態碼 |
---|---|---|
HttpResponseRedirect | 重定向 | 302 |
HttpResponseNotModified | 未修改 | 304 |
HttpResponseBadRequest | 錯誤請求 | 400 |
HttpResponseNotFound | 沒有對應的資源 | 404 |
HttpResponseForbidden | 請求被禁止 | 403 |
HttpResponseServerError | 伺服器錯誤 | 500 |