django之請求和響應

2021-08-21 11:40:44 字數 3147 閱讀 2013

回想一下,利用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...