Django 請求Request的具體使用方法
1 URL路徑參數(shù)
在定義路由URL時,使用正則表達式提取參數(shù)的方法從URL中獲取請求參數(shù),Django會將提取的參數(shù)直接傳遞到視圖的傳入?yún)?shù)中。
未命名參數(shù)按順序傳遞, 如
url(r'^index/([a-z]+)/(\d{4})/$', views.index), def index(request, parameter1, parameter2): print(parameter1) print(parameter2) return HttpResponse('OK')
有命名參數(shù)按名傳遞,如
url(r'^index/(?P<parameter1>[a-z]+)/(?P<parameter2>\d{4})/$', views.index), def index(request, parameter1, parameter2): print(parameter1) print(parameter2) return HttpResponse('OK')
2、 查詢字符串Query String
獲取請求路徑中的查詢字符串參數(shù),可以通過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():根據(jù)鍵獲取值
如果一個鍵同時擁有多個值將獲取最后一個值
如果鍵不存在則返回None值,可以設置默認值進行后續(xù)處理
dict.get('鍵',默認值) 可簡寫為 dict['鍵']
方法getlist():根據(jù)鍵獲取值,值以列表返回,可以獲取指定鍵的所有值
如果鍵不存在則返回空列表[],可以設置默認值進行后續(xù)處理
dict.getlist('鍵',默認值)
3、 請求體
請求體數(shù)據(jù)格式不固定,可以是表單類型字符串,可以是JSON字符串,可以是XML字符串,應區(qū)別對待。
可以有POST、PUT、PATCH、DELETE。
Django默認開啟了CSRF防護,會對上述請求方式進行CSRF防護驗證,在測試時可以關閉CSRF防護機制,方法為在settings.py文件中注釋掉CSRF中間件,如:
4、 表單類型 Form Data
前端發(fā)送的表單類型的請求體數(shù)據(jù),可以通過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
非表單類型的請求體數(shù)據(jù),Django無法自動解析,可以通過request.body屬性獲取最原始的請求體數(shù)據(jù)。
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中的數(shù)據(jù)
def headers(request): print(request.META['SERVER_PORT']) return HttpResponse('OK')
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
初步介紹Python中的pydoc模塊和distutils模塊
這篇文章主要介紹了Python中的pydoc模塊和distutils模塊,本文來自于IBM官方開發(fā)者技術文檔,需要的朋友可以參考下2015-04-04小白教你PyCharm從下載到安裝再到科學使用PyCharm2020最新激活碼
這篇文章主要介紹了PyCharm最新版從下載到安裝再到科學使用PyCharm2020最新激活碼,需要的朋友可以參考下2020-09-09