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、 查詢字符串Query String
獲取請(qǐng)求路徑中的查詢字符串參數(shù),可以通過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類型的對(duì)象
方法get():根據(jù)鍵獲取值
如果一個(gè)鍵同時(shí)擁有多個(gè)值將獲取最后一個(gè)值
如果鍵不存在則返回None值,可以設(shè)置默認(rèn)值進(jìn)行后續(xù)處理
dict.get('鍵',默認(rèn)值)
可簡寫為
dict['鍵']
方法getlist():根據(jù)鍵獲取值,值以列表返回,可以獲取指定鍵的所有值
如果鍵不存在則返回空列表[],可以設(shè)置默認(rèn)值進(jìn)行后續(xù)處理
dict.getlist('鍵',默認(rèn)值)
3、 請(qǐng)求體
請(qǐng)求體數(shù)據(jù)格式不固定,可以是表單類型字符串,可以是JSON字符串,可以是XML字符串,應(yīng)區(qū)別對(duì)待。
可以有POST、PUT、PATCH、DELETE。
Django默認(rèn)開啟了CSRF防護(hù),會(huì)對(duì)上述請(qǐng)求方式進(jìn)行CSRF防護(hù)驗(yàn)證,在測(cè)試時(shí)可以關(guān)閉CSRF防護(hù)機(jī)制,方法為在settings.py文件中注釋掉CSRF中間件,如:

4、 表單類型 Form Data
前端發(fā)送的表單類型的請(qǐng)求體數(shù)據(jù),可以通過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、非表單類型 Non-Form Data
非表單類型的請(qǐng)求體數(shù)據(jù),Django無法自動(dòng)解析,可以通過request.body屬性獲取最原始的請(qǐng)求體數(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、請(qǐng)求頭
可以通過request.META屬性獲取請(qǐng)求頭headers中的數(shù)據(jù)

def headers(request):
print(request.META['SERVER_PORT'])
return HttpResponse('OK')
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在pycharm中輸入import torch報(bào)錯(cuò)如何解決
這篇文章主要介紹了在pycharm中輸入import torch報(bào)錯(cuò)如何解決問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Python調(diào)用ChatGPT?API接口的用法詳解
ChatGPT可以實(shí)現(xiàn)chat,生成圖片,識(shí)別關(guān)鍵,改錯(cuò)等等功能,本文簡單的給大家介紹一下如何使用python調(diào)用ChatGPT?API接口,感興趣的小伙伴可以參考一下2023-05-05
Python?Pyramid框架應(yīng)用場景及高級(jí)特性實(shí)戰(zhàn)
Pyramid是一個(gè)靈活且強(qiáng)大的Python?web框架,廣泛用于構(gòu)建各種規(guī)模的Web應(yīng)用程序,本文將深度探索Pyramid框架,介紹其核心概念、應(yīng)用場景以及一些高級(jí)特性2023-12-12
超簡單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn)
這篇文章主要介紹了超簡單的scrapy實(shí)現(xiàn)ip動(dòng)態(tài)代理與更換ip的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
django settings.py配置文件的詳細(xì)介紹
本文主要介紹了django settings.py配置文件的詳細(xì)介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Python設(shè)計(jì)模式之建造者模式實(shí)例詳解
這篇文章主要介紹了Python設(shè)計(jì)模式之建造者模式,簡單說明了建造者模式的概念、原理,并結(jié)合實(shí)例形式分析了Python定義及使用建造者模式相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
python matplotlib imshow熱圖坐標(biāo)替換/映射實(shí)例
這篇文章主要介紹了python matplotlib imshow熱圖坐標(biāo)替換/映射實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03

