日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【django】HttpRequest对象

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【django】HttpRequest对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回想?下,利?HTTP協議向服務器傳參有?種途徑?
a、提取URL的特定部分,如/film/zhangsan/20/,可以在服務器端的路由中?正則表達式截取;
b、查詢字符串(query string),形如key1=value1&key2=value2;
c、請求體(body)中發送的數據,?如表單數據、json、xml;
d、在http報?的頭(header)中。

一. URL路徑參數

1、如果想從URL中獲取值,需要在正則表達式中使?分組,
2、獲取值分為兩種?式
2.1、位置參數
a、參數的位置不能錯
2.2、關鍵字參數

a、參數的位置可以變,跟關鍵字保持?致即可
注意:兩種參數的?式不要混合使?,在?個正則表達式中只能使??種參數?式

1、位置參數

子路由:

from django.urls import re_path from film import views urlpatterns = [ re_path('^people/(\d+)/(\d+)/$',views.peopleView) ]

視圖:

def peopleView(request,age,name): print(name) return HttpResponse('%s-%s'%(name,age))

2、關鍵字參數

子路由

re_path('^people/(?P<name>\w+)/(?P<age>\d+)/$',views.peopleView) path('people/<str:name>/<int:age>/',views.peopleView),

視圖

def peopleView(request,age,name): print(name) return HttpResponse('%s-%s'%(name,age))

二、django中的QueryDict對象

HttpRequest對象的屬性GET、POST都是QueryDict類型的對象
與python字典不同,QueryDict類型的對象?來處理同?個鍵帶有多個值的情況

1、?法get():根據鍵獲取值
a、如果?個鍵同時擁有多個值將獲取最后?個值
b、如果鍵不存在則返回None值,可以設置默認值進?后續
c、處理get(‘鍵’,默認值)
2、?法getlist():根據鍵獲取值,值以列表返回,可以獲取指定鍵的所有值
a、如果鍵不存在則返回空列表[],可以設置默認值進?后續處理
b、getlist(‘鍵’,默認值)

def testview(request):#todo 獲取查詢字符串參數print(request.GET) <QueryDict: {'key1': ['666', '777'], 'key2': ['888']}>print(request.GET.get('key1','null')) 777print(request.GET.get('key6','null')) nullprint(request.GET.getlist('key1')) ['666', '777']return HttpResponse('hello')

三、查詢字符串Query String

獲取請求路徑中的查詢字符串參數(形如?k1=v1&k2=v2),可以通過request.GET屬性獲取,返回QueryDict對象。

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

重要:查詢字符串不區分請求?式,即假使客戶端進?POST?式的請求,依然可以通過request.GET獲取請求中的查詢字符串數據。

四、請求體

請求體數據格式不固定,可以是表單類型字符串,可以是JSON字符串,可以是XML字符串,應區別對待。
可以發送請求體數據的請求?式有POST、PUT、PATCH、DELETE。
Django默認開啟了CSRF防護,會對上述請求?式進?CSRF防護驗證,在測試時可以關閉CSRF防護機制,?法為在settings.py?件中注釋掉CSRF中間件,

4.1 表單類型 Form Data

前端發送的表單類型的請求體數據,可以通過request.POST屬性獲取,返回QueryDict對象。

def post(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')

4.2 ?表單類型 Non-Form Data

?表單類型的請求體數據,Django?法?動解析,可以通過request.body屬性獲取最原始的請求體數據,??按照請求體格式(JSON、XML等)進?解析。request.body返回bytes類型。

def testview(request):#請求體data=json.loads(request.body)print(data) {'uname': 'kb', 'age': 18}print(type(data)) <class 'dict'>print(data.get('uname')) kbreturn HttpResponse('hello')

五、請求頭

可以通過request.META屬性獲取請求頭headers中的數據,request.META為字典類型。

常見的請求頭:

CONTENT_LENGTH– The length of the request body (as a string). CONTENT_TYPE– The MIME type of the request body. HTTP_ACCEPT– Acceptable content types for the response. HTTP_ACCEPT_ENCODING– Acceptable encodings for the response. HTTP_ACCEPT_LANGUAGE– Acceptable languages for the response. HTTP_HOST– The HTTP Host header sent by the client. HTTP_REFERER– The referring page, if any. HTTP_USER_AGENT– The client’s user-agent string.QUERY_STRING– The query string, as a single (unparsed) string. REMOTE_ADDR– The IP address of the client. REMOTE_HOST– The hostname of the client. REMOTE_USER– The user authenticated by the Web server, if any. REQUEST_METHOD– A string such as"GET"or"POST". SERVER_NAME– The hostname of the server. SERVER_PORT– The port of the server (as a string). def testview(request):print(request.META)print(request.META.get('HTTP_HOST')) return HttpResponse('hello')

六、其他常?HttpRequest對象屬性

1、method:?個字符串,表示請求使?的HTTP?法,常?值包括:‘GET’、‘POST’。
user:請求的?戶對象。
path:?個字符串,表示請求的??的完整路徑,不包含域名和參數部分。
encoding:?個字符串,表示提交的數據的編碼?式。如果為None則表示使?瀏覽器的默認設置,?般為utf-8。這個屬性是可寫的,可以通過修改它來修改訪問表單數據使?的編碼,接下來對屬性的任何訪問將使?新的encoding值。
FILES:?個類似于字典的對象,包含所有的上傳?件。

def testview(request):print(request.FILES)return HttpResponse('hello')

<MultiValueDict: {‘a’: [<InMemoryUploadedFile: 新建 XLS 工作表.xls (application/vnd.ms-excel)>]}>
[16/Dec/2021 23:08:58] “POST /film/test/ HTTP/1.1” 200 5

總結

以上是生活随笔為你收集整理的【django】HttpRequest对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 雨宫琴音一区二区三区 | 动漫av在线 | 韩国精品一区 | 理论片91 | 91美女诱惑 | 久久亚洲av成人无码国产电影 | 欧美视频成人 | 少妇又色又紧又爽又刺激视频 | 粉嫩视频在线观看 | 12av毛片 | 欧美资源在线观看 | 日日夜夜免费精品视频 | 牛牛在线免费视频 | 在线国产区 | 91黄色在线观看 | 国产精品日本一区二区在线播放 | 在线观看欧美一区二区三区 | 日本美女啪啪 | 欧美激情日韩 | 四季av综合网站 | youjizz.com中国 | 青春草久久 | 日韩jizz| 一本一道av无码中文字幕 | 伊人精品在线 | 欧美双性人妖o0 | 欧美黄色aaa| 五月婷婷深深爱 | 免费在线看黄视频 | zzjj国产精品一区二区 | 精品少妇av | 黄色片播放器 | 精品一区二区三区无码视频 | 亚洲第一黄色网址 | 中文字幕在线成人 | 9cao| 日韩一区二区三区四区五区六区 | 日本老熟妇毛茸茸 | 日韩激情电影在线 | 亚洲а∨天堂久久精品2021 | 日日操夜夜操天天操 | 国产男女无遮挡猛进猛出 | 就爱操av| 欧美性日韩 | 欧美日韩亚洲在线观看 | 青青草原免费观看 | 黄色av电影在线观看 | 国产激情毛片 | 国产精品美女久久 | 久久免费视频一区二区 | 久久精品久久久 | 精品一区二区三区免费毛片爱 | 辟里啪啦国语版免费观看 | 久草青青视频 | 人妻一区二区在线 | 91精品大片 | 91精品久久久久久 | 久久精品亚洲 | 天天干人人 | 伦理久久| 狠狠搞狠狠干 | 91国产精品 | av黄色免费在线观看 | 欧美国产日韩在线观看 | 成年人黄视频 | 在线cao| 国产三级黄色 | 99久久久国产精品无码网爆 | 九九午夜| 国产青青在线 | 精品香蕉99久久久久网站 | 亚洲一区二区成人 | 她也啪在线视频 | 三级色视频 | www.白丝| 美女被爆操网站 | 玖玖爱在线精品视频 | 好吊色视频一区二区 | 中文字幕国产一区 | 少妇毛片视频 | 欧美成人dvd在线视频 | 国产精品成熟老女人 | 大尺度激情吻胸视频 | 91黄色国产 | av女大全列表 | 国产一区二区三区小说 | 最新日韩在线视频 | 精品人妻伦一二三区免费 | 夜夜夜夜操 | 中文字幕亚洲一区二区三区五十路 | 欧美图片一区二区三区 | 国产精品69毛片高清亚洲 | 漂亮人妻洗澡被公强 日日躁 | 中文字幕在线网 | 天天影视亚洲 | 精品午夜一区二区三区 | 9久9久9久女女女九九九一九 | 潮喷失禁大喷水aⅴ无码 | 特种兵之深入敌后高清全集免费观看 |