1. 程式人生 > >Django學習--HttpRequest和 HttpResponse 物件

Django學習--HttpRequest和 HttpResponse 物件

HttpRequest物件

1.提取URL的特定部分

如果想從URL中獲取值,使用正則分組來獲取url中的引數方式有個兩種:

  1. 位置引數,引數位置需要一一對應:

    應用urls.py

    3.1.png

    檢視函式中的引數需要和路由的引數一一對應,引數位置不能錯

    3.2.png

    3.3.png

  2. 關鍵字引數,引數的位置可以變,跟關鍵字保持一致即可:

    應用的urls.py中,定義路由地址,需要使用?P<名字>給正則分組起名字

    41.1.png

    檢視函式中的引數,除了request之外的形參位置隨意指定,和路由定義的一致即可.
    4.2.png

    3.3.png

2.獲取GET請求中的引數

獲取GET請求的引數,形如http://ip:port/route/?key1=value1&key2=value2

;

1.在檢視函式中通過request.GET獲取請求中?之後的引數,返回的是一個QueryDict物件,類似字典,不同的是QueryDict物件,存在一鍵多值的方式;

1.png

2.QueryDict物件

  • 通過get(key)獲取值,如果存在多個值得時候,獲取最後值列表中最後一個值
  • 需要獲取多個值得之後,通過getlist(key),獲取鍵所有的值

    2.png

3.獲取請求體中的資料

1. 表單資料

我們通過postman模擬瀏覽器提交form資料:

postman.png

提示錯誤
111.png

tim截圖20180722095909.png

django預設開啟csrf保護,我們暫時關閉csrf保護,在settings檔案中
11.png

瀏覽器傳送的form資料,通過request.POST獲取,返回的是QueryDict物件
22.png

  • 通過get(key) 獲取一個數據
  • 通過getlist(key) 獲取所有資料

2. json資料

  1. 使用request.body獲取非表單提交的資料
  2. 獲取的資料返回的是二進位制資料,所以我們需要對資料做轉換成json資料

2.1.png

2.2.png

4.獲取請求頭中的資料

  • 獲取請求方式 request.method

* 獲取認證使用者 request.user

HttpResponse物件

HttpResponse 物件

HttpResponse (content,content_type,status)對應的引數
content-->返回的內容
content_type--> MIME 型別
status-->響應狀態碼

JsonResponse

若要返回json資料,可以使用JsonResponse來構造響應物件,作用:

  • 幫助我們將資料轉換為json字串
  • 設定響應頭Content-Type為application/json

如果需要將字典放到列表中,進行轉換的時候,需要將 safe 改為False ,否則會提示錯誤:

tim截圖20180722105610.png

將 safe 改為False:

from django.http import JsonResponse

def response(request):
    list = [{'name':'itcast'},{'name':'itheima'}]
    return JsonResponse(list,safe=False)

redirect

重定向到新的地址中
from django.shortcuts import redirect

def response(request):
    return redirect('www.baidu.com')