回想一下,利用http協議向伺服器傳參有幾種途徑?
在定義路由url時,可以使用正規表示式提取引數的方法從url中獲取請求引數,django會將提取的引數直接傳遞到檢視的傳入引數中。
定義在django.http.querydict
httprequest物件的屬性get、post都是querydict型別的物件
與python字典不同,querydict型別的物件用來處理同乙個鍵帶有多個值的情況
獲取請求路徑中的查詢字串引數(形如?k1=v1&k2=v2),可以通過request.get屬性獲取,返回querydict物件。
重要:查詢字串不區分請求方式,即假使客戶端進行post方式的請求,依然可以通過request.get獲取請求中的查詢字串資料。
請求體資料格式不固定,可以是表單型別字串,可以是json字串,可以是xml字串,應區別對待。
可以傳送請求體資料的請求方式有post、put、patch、delete。
django預設開啟了csrf防護,會對上述請求方式進行csrf防護驗證,在測試時可以關閉csrf防護機制,方法為在settings.py檔案中注釋掉csrf中介軟體,如:
前端傳送的表單型別的請求體資料,可以通過request.post屬性獲取,返回querydict物件。
重要:request.post只能用來獲取post方式的請求體表單資料。
非表單型別的請求體資料,django無法自動解析,可以通過request.body屬性獲取最原始的請求體資料,自己按照請求體格式(json、xml等)進行解析。request.body返回bytes型別。
例如要獲取請求體中的如下json資料
可以進行如下方法操作:
import json
defget_body_json
(request):
json_str = request.body
json_str = json_str.decode() # python3.6 無需執行此步
可以通過request.meta屬性獲取請求頭headers中的資料,request.meta為字典型別。
常見的請求頭如:
具體使用如:
檢視在接收請求並處理後,必須返回httpresponse物件或子物件。httprequest物件由django建立,httpresponse物件由開發人員建立。
可以使用django.http.httpresponse來構造響應物件。
httpresponse(content=響應體, content_type=響應體資料型別, status=狀態碼)
也可通過httpresponse物件屬性來設定響應體、狀態碼:
響應頭可以直接將httpresponse物件當做字典進行響應頭鍵值對的設定:
# 自定義響應頭itcast, 值為python
示例:
或者response = httpresponse('itcast python')
response.status_code = 400
response['itcast'] = 'python'
return response
django提供了一系列httpresponse的子類,可以快速設定狀態碼
若要返回json資料,可以使用jsonresponse來構造響應物件,作用:
Django的請求和響應
檢視1就是python函式 2函式的第乙個引數 就是請求 和請求相關的 它是httprequest的例項物件 3 我們必須要返回乙個響應 相應是httpresponse的例項物件 子類例項物件 def index request 登入成功之後需要跳轉到首頁 註冊成功後需要跳轉到首頁 from dja...
Django基礎1 請求和響應
四 建立投票應用程式 安裝命令 pip3 install django檢視版本 python3 m django version 2.1.2版本的選擇 作為學習當然選擇最新版本了,預設安裝的也是最新版本。django2.0 python3.4,python3.5,python3.6 django2....
Django (03)請求和響應
客戶端傳參的幾種方式 傳遞方式 示例 後端獲取方式 資料型別 url路徑 path news 1 2 正則匹配 str查詢字串 news2?category 1 page 2 request.get querydict 請求體 表單型別資料 category 1 page 2 request.pos...