Django服務端獲取請求與響應數據
服務器獲取請求的4種方式
P.S. 利用HTTP協議向服務器傳參的4種請求:
- 查詢字符串
- 請求體
- URL路徑參數
- 請求頭
1.提取查詢字符串
request.GET
P.S. 在
HttpRequest
對象中,屬性 GET 和 POST 得到的都是django.http.QueryDict
所創建的實例。這是一個 Django 自定義的類似字典的類,用來處理同一個鍵帶多個值的情況,專門用來存儲請求中提取的查詢字符串參數和請求體參數。
2.提取請求體數據
表單類型:
request.POST
JSON類型:
request.body
P.S. 該方法獲取的是字節類型的原始數據,需要調用json模塊轉換數據類型。
3.提取URL路徑參數
P.S. 使用默認的路由轉換語法,直接用path(),需要使用自定義路由轉換的正則表達式,則需要用re_path()。
path()/re_path()
P.S. Django默認封裝用於路由轉換的正則表達式:
DEFAULT_CONVERTERS = { 'int': IntConverter(), # 匹配正整數,包含0 'path': PathConverter(), # 匹配任何非空字符串,包含了路徑分隔符 'slug': SlugConverter(), # 匹配字母、數字以及橫槓、下劃線組成的字符串 'str': StringConverter(), # 匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式 'uuid': UUIDConverter(), # 匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00 }
4.提取請求頭數據
request.META
服務器響應請求的4種方式
1.響應多種數據類型
HttpResponse(content=響應體, content_type=響應體數據類型,默認爲text/html, status=狀態碼,默認爲200)
2.響應JSON類型
http.JsonResponse(dict_data)
http.JsonResponse(list_data, safe=False)
3.重定向
P.S. 這裏的重定向是指當某個操作完成後,需要將用戶引導到另外一個邏輯或頁面。
redirect()
P.S. 重定向還可以搭配reverse()方法,通過給路由起別名,完成路由的反向解析。
4.渲染並響應HTML模板
P.S. 通俗理解就是將context的內容,加載到templates中定義的文件,返回一個渲染後的 HttpResponse 對象。
render(request, template_name, context)