1. 程式人生 > 程式設計 >Django 請求Request的具體使用方法

Django 請求Request的具體使用方法

1 URL路徑引數

在定義路由URL時,使用正則表示式提取引數的方法從URL中獲取請求引數,Django會將提取的引數直接傳遞到檢視的傳入引數中。

未命名引數按順序傳遞, 如

url(r'^index/([a-z]+)/(\d{4})/$',views.index),def index(request,parameter1,parameter2):
  print(parameter1)
  print(parameter2)
  return HttpResponse('OK')

有命名引數按名傳遞,如

url(r'^index/(?P<parameter1>[a-z]+)/(?P<parameter2>\d{4})/$',parameter2):
  print(parameter1)
  print(parameter2)
  return HttpResponse('OK')

2、 查詢字串Query String

獲取請求路徑中的查詢字串引數,可以通過request.GET屬性獲取,返回QueryDict物件。

# /q/?a=2&b=3&a=4

def q(request):
  a = request.GET.get('a')
  b = request.GET.get('b')
  alist = request.GET.getlist('a')
  print(a) # 4
  print(b) # 3
  print(alist) # ['2','4']
  return HttpResponse('OK')
 

2、 QueryDict物件

HttpRequest物件的屬性GET、POST都是QueryDict型別的物件

方法get():根據鍵獲取值

如果一個鍵同時擁有多個值將獲取最後一個值

如果鍵不存在則返回None值,可以設定預設值進行後續處理

dict.get('鍵',預設值)
可簡寫為
dict['鍵']

方法getlist():根據鍵獲取值,值以列表返回,可以獲取指定鍵的所有值

如果鍵不存在則返回空列表[],可以設定預設值進行後續處理

dict.getlist('鍵',預設值)

3、 請求體

請求體資料格式不固定,可以是表單型別字串,可以是JSON字串,可以是XML字串,應區別對待。

可以有POST、PUT、PATCH、DELETE。

Django預設開啟了CSRF防護,會對上述請求方式進行CSRF防護驗證,在測試時可以關閉CSRF防護機制,方法為在settings.py檔案中註釋掉CSRF中介軟體,如:

4、 表單型別 Form Data

前端傳送的表單型別的請求體資料,可以通過request.POST屬性獲取,返回QueryDict物件

def body(request):
  a = request.POST.get('a')
  b = request.POST.get('b')
  alist = request.POST.getlist('a')
  print(a)
  print(b)
  print(alist)
  return HttpResponse('OK')

5、非表單型別 Non-Form Data

非表單型別的請求體資料,Django無法自動解析,可以通過request.body屬性獲取最原始的請求體資料。

import json

def body_json(request):
  json_str = request.body
  json_str = json_str.decode() # python3.6 無需這步
  data = json.loads(json_str)
  print(data['a'])
  print(data['b'])
  return HttpResponse('OK')

6、請求頭

可以通過request.META屬性獲取請求頭headers中的資料

def headers(request):
  print(request.META['SERVER_PORT'])
  return HttpResponse('OK')

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。