Django 請(qǐng)求Request的具體使用方法
1 URL路徑參數(shù)
在定義路由URL時(shí),使用正則表達(dá)式提取參數(shù)的方法從URL中獲取請(qǐng)求參數(shù),Django會(huì)將提取的參數(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、 查詢(xún)字符串Query String
獲取請(qǐng)求路徑中的查詢(xún)字符串參數(shù),可以通過(guò)request.GET屬性獲取,返回QueryDict對(duì)象。
# /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對(duì)象
HttpRequest對(duì)象的屬性GET、POST都是QueryDict類(lèi)型的對(duì)象
方法get():根據(jù)鍵獲取值
如果一個(gè)鍵同時(shí)擁有多個(gè)值將獲取最后一個(gè)值
如果鍵不存在則返回None值,可以設(shè)置默認(rèn)值進(jìn)行后續(xù)處理
dict.get('鍵',默認(rèn)值) 可簡(jiǎn)寫(xiě)為 dict['鍵']
方法getlist():根據(jù)鍵獲取值,值以列表返回,可以獲取指定鍵的所有值
如果鍵不存在則返回空列表[],可以設(shè)置默認(rèn)值進(jìn)行后續(xù)處理
dict.getlist('鍵',默認(rèn)值)
3、 請(qǐng)求體
請(qǐng)求體數(shù)據(jù)格式不固定,可以是表單類(lèi)型字符串,可以是JSON字符串,可以是XML字符串,應(yīng)區(qū)別對(duì)待。
可以有POST、PUT、PATCH、DELETE。
Django默認(rèn)開(kāi)啟了CSRF防護(hù),會(huì)對(duì)上述請(qǐng)求方式進(jìn)行CSRF防護(hù)驗(yàn)證,在測(cè)試時(shí)可以關(guān)閉CSRF防護(hù)機(jī)制,方法為在settings.py文件中注釋掉CSRF中間件,如:
4、 表單類(lèi)型 Form Data
前端發(fā)送的表單類(lèi)型的請(qǐng)求體數(shù)據(jù),可以通過(guò)request.POST屬性獲取,返回QueryDict對(duì)象
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、非表單類(lèi)型 Non-Form Data
非表單類(lèi)型的請(qǐng)求體數(shù)據(jù),Django無(wú)法自動(dòng)解析,可以通過(guò)request.body屬性獲取最原始的請(qǐng)求體數(shù)據(jù)。
import json def body_json(request): json_str = request.body json_str = json_str.decode() # python3.6 無(wú)需這步 data = json.loads(json_str) print(data['a']) print(data['b']) return HttpResponse('OK')
6、請(qǐng)求頭
可以通過(guò)request.META屬性獲取請(qǐng)求頭headers中的數(shù)據(jù)
def headers(request): print(request.META['SERVER_PORT']) return HttpResponse('OK')
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
初步介紹Python中的pydoc模塊和distutils模塊
這篇文章主要介紹了Python中的pydoc模塊和distutils模塊,本文來(lái)自于IBM官方開(kāi)發(fā)者技術(shù)文檔,需要的朋友可以參考下2015-04-04Python 處理日期時(shí)間的Arrow庫(kù)使用
這篇文章主要介紹了Python 處理日期時(shí)間的Arrow庫(kù)使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08python3跳出一個(gè)循環(huán)的實(shí)例操作
在本篇內(nèi)容里小編給大家整理的是關(guān)于python3跳出一個(gè)循環(huán)的實(shí)例操作內(nèi)容,有需要的朋友們可以參考下。2020-08-08python中常見(jiàn)的運(yùn)算符及用法實(shí)例
運(yùn)算符用于執(zhí)行程序代碼運(yùn)算,會(huì)針對(duì)一個(gè)以上操作數(shù)項(xiàng)目來(lái)進(jìn)行運(yùn)算,下面這篇文章主要給大家介紹了關(guān)于python中常見(jiàn)的運(yùn)算符及用法的相關(guān)資料,需要的朋友可以參考下2022-03-03Python實(shí)現(xiàn)的tab文件操作類(lèi)分享
這篇文章主要介紹了Python實(shí)現(xiàn)的tab文件操作類(lèi)分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-11-11健身房被搭訕?用python寫(xiě)了個(gè)小米計(jì)時(shí)器助人為樂(lè)
今天教大家Python圖形界面開(kāi)發(fā)的相關(guān)知識(shí),文章圍繞著如何實(shí)現(xiàn)一個(gè)小米手機(jī)上的秒表計(jì)時(shí)器功能展開(kāi),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06python使用ddt過(guò)程中遇到的問(wèn)題及解決方案【推薦】
在使用DDT數(shù)據(jù)驅(qū)動(dòng)+HTMLTestRunner輸出測(cè)試報(bào)告時(shí)遇到過(guò)2個(gè)問(wèn)題,沒(méi)個(gè)問(wèn)題都很奇葩,下面小編通過(guò)本文給大家分享python使用ddt過(guò)程中遇到的問(wèn)題及解決方案,需要的朋友參考下吧2018-10-10小白教你PyCharm從下載到安裝再到科學(xué)使用PyCharm2020最新激活碼
這篇文章主要介紹了PyCharm最新版從下載到安裝再到科學(xué)使用PyCharm2020最新激活碼,需要的朋友可以參考下2020-09-09