利用http的幾種傳參路徑:
1、url路徑引數
return httpresponse('ok')2、django中的querydict物件
httprequest物件的屬性get、post都是querydict型別的物件
# /qs/?a=1&b=2&a=3
def qs(request):
a = request.get.get('a')
b = request.get.get('b')
alist = request.get.getlist('a')
print(a) # 3
print(b) # 2
print(alist) # ['1', '3']
return httpresponse('ok')
重要:查詢字串不區分請求方式,即假使客戶端進行post方式的請求,依然可以通過request.get獲取請求中的查詢字串資料。
4、請求體
請求體資料格式不固定,可以是表單型別字串,可以是json字串,可以是xml字串,應區別對待。
django預設開啟了csrf防護,會對上述請求方式進行csrf防護驗證,在測試時可以關閉csrf防護機制,方法為在settings.py檔案中注釋掉csrf中介軟體。
import json
def get_body_json(request):
json_str = request.body
json_str = json_str.decode() # python3.6 無需執行此步
req_data = json.loads(json_str)
print(req_data['a']) # 轉成json後就可以使用鍵值對取值了
print(req_data['b'])
return httpresponse('ok')
5、請求頭
可以通過request.meta屬性獲取請求頭headers中的資料,request.meta為字典型別。
def get_headers(request):
print(request.meta['content_type'])
return httpresponse('ok')
6、其他常用的httprequest物件屬性
檢視在接收請求並處理後,必須返回httpresponse物件或子物件。httprequest物件由django建立,httpresponse物件由開發人員建立。
可以使用django.http.httpresponse來構造響應物件。
httpresponse(content=響應體, content_type=響應體資料型別, status=狀態碼)
在header中設定資料
response.setheader(「pragma」, 「no-cache」);
響應頭可以直接將httpresponse物件當做字典進行響應頭鍵值對的設定:
response['itcast'] = 'python' # 自定義響應頭itcast, 值為python2、jsonresponse
若要返回json資料,可以使用jsonresponse來構造響應物件,作用:
return jsonresponse()3、 redirect 重定向
from django.shortcuts import redirect
def demo_view(request):
return redirect('/index.html')
django 9 請求與響應
寫在表單下面 檔案上傳 settings.py upload root os.paht.join base dir,upload enctype multipart form data 上傳多個檔案 multiple request用於接受前端的資料 render用於給前端返回資料 file.chu...
Django中url以及請求響應
1 url傳遞引數 1 非關鍵字引數 urls正則的定義 路徑 路徑 引數匹配的正則 注意 1 如果要獲取傳遞進來的引數,必須給對應的引數的正則加上 才可以提取 2 如果url中有引數,就必須在檢視函式的形式引數上定義乙個引數,用來接收,否則報錯 如果需要傳遞多個引數 urls正則的定義 路徑 路徑...
django響應POST請求
因為乙個特殊的需求,post提交的資料並不是表單資料,而是乙個檔案。前端使用的是ajax。後端使用的是django 因此前端需要做的特殊處理是 var tempfile new formdata ajax error function e 後端需要處理的是 在urls.py中增加路徑。在對應的路徑下...