五月开心播播网_国内精品伊人久久久久影院对白_亚洲精品高清视频_国产精品激情_68精品久久久久久欧美_四虎免费av_97精品在线视频_欧美知名女优

您的位置:首頁技術文章
文章詳情頁

Django使用HTTP協議向服務器傳參方式小結

瀏覽:2日期:2024-11-25 09:35:27
目錄1.查詢字符串數據(query string):2. 提取請求體數據2.1 表單類型請求體數據(Form Data)2.2 非表單類型請求體數據(Non-Form Data):JSON3. URL路徑參數:提取URL路徑中的特定部分數據3.1 path()提取路徑參數3.2 re_path()提取路徑參數3.3 path()和re_path()如何選擇?4. 請求頭5. 其他常用HttpRequest對象屬性

用戶發送請求時攜帶的參數后端需要使用,而不同的發送參數的方式對應了不同的提取參數的方式

利用HTTP協議向服務器傳參有幾種途徑?

1.查詢字符串數據(query string):

形如:?key1=value1&key2=value2比如:http://127.0.0.1:8000/?name =lx&age=0中的?name =lx

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

class TestQuery(View): def get(self, request):# 獲取查詢字符串參數name、agename = request.GET.get(’name’, ’lx’)age = request.GET.get(’age’, ’0’)return HttpResponse(’查詢字符串參數:%s %s’ % (name, age))

Django使用HTTP協議向服務器傳參方式小結

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

QueryDict補充:1)QueryDict是由Django自己封裝的一個數據類型,繼承自python的字典Dict,它被定義在django.http.QueryDict中專門用來存儲請求中提取的查詢字符串參數和請求體參數.即,HttpRequest對象中的屬性GET、POST都是QueryDict類型的數據

2. 提取請求體數據

1)可以發送請求體數據的請求方式有:POST、PUT、PATCH、DELETE2)請求體數據格式不固定,常見的有:表單類型數據和JSON字符串類型,我們應區別對待

2.1 表單類型請求體數據(Form Data)

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

class TestQuery(View): def post(self, request):# 獲取表單類型請求體參數中的username、passwordusername = request.POST.get(’username’)password = request.POST.get(’password’)return HttpResponse(’表單類型請求體參數:%s %s’ % (username, password))

重要提示:

request.POST只能用來獲取POST表單發送的請求體數據

Django使用HTTP協議向服務器傳參方式小結

2.2 非表單類型請求體數據(Non-Form Data):JSON

1)非表單類型的請求體數據,Django無法自動解析,可以通過request.body屬性獲取最原始的請求體數據2)request.body獲取的是bytes類型的請求體原始數據

class TestQuery(View): def post(self, request):# 獲取請求體中原始的JSON數據json_str = request.body# 使用json模塊將原始的JSON數據轉字典json_dict = json.loads(json_str)# 請求體參數中的username、passwordusername = json_dict.get(’username’)password = json_dict.get(’password’)return HttpResponse(’表單類型請求體參數:%s %s’ % (username, password))

結果展示:

Django使用HTTP協議向服務器傳參方式小結

3. URL路徑參數:提取URL路徑中的特定部分數據

1)在定義路由時,可以從URL中獲取特定部分的路徑參數2)Django的路由系統會將提取的路徑參數傳遞到視圖的內部3)path()和re_path()都可以提取路徑參數

需求1:http://127.0.0.1:8000/pratice/register/18/提取路徑中的數字18需求2:http://127.0.0.1:8000/pratice/register/18500000000/提取路徑中的手機號18500000000

3.1 path()提取路徑參數

測試path()提取普通路徑參數:http://127.0.0.1:8000/pratice/register/18/path(‘pratice/register/int:age/’, views.URLParam1View.as_view()),

class TestQuery(View): def get(self, request, age):#提取路徑參數是在路由中完成的,因為路徑是在路由系統中處理的print(’提取的路徑傳參:’,age)return HttpResponse(’path()提取普通路徑參數:%s’ % age)

Django使用HTTP協議向服務器傳參方式小結

路由中提取路徑參數時,使用的關鍵字,必須跟視圖中參數名一致思考:實現需求1時提取age數字的int:age是什么?路由轉換器Django默認封裝了一些正則表達式,用于在path()中要提取路徑參數時使用默認的路由轉換器:

位置在django.urls.converters.py

DEFAULT_CONVERTERS = { ’int’: IntConverter(), # 匹配正整數,包含0 ’path’: PathConverter(), # 匹配任何非空字符串,包含了路徑分隔符 ’slug’: SlugConverter(), # 匹配字母、數字以及橫杠、下劃線組成的字符串 ’str’: StringConverter(), # 匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式 ’uuid’: UUIDConverter(), # 匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00}

源碼解析:

Django使用HTTP協議向服務器傳參方式小結

實現需求2

http://127.0.0.1:8000/pratice/register/18500000000/提取路徑中的手機號18500000000

問題:1)默認的路由轉換器中,沒有專門用來匹配手機號的路由轉換器2)所以在使用path()實現需求2時,就無法直接使用默認的路由轉換器解決方案:如果默認的路由轉換器無法滿足需求時,我們就需要自定義路由轉換器

在任意可以被導入的python文件中,都可以自定義路由轉換器

from django.urls import path, register_converterfrom . import viewsclass MobileConverter: '''自定義路由轉換器:匹配手機號''' # 匹配手機號碼的正則 regex = ’1[3-9]d{9}’ def to_python(self, value): # 將匹配結果傳遞到視圖內部時使用 return int(value) def to_url(self, value): # 將匹配結果用于反向解析傳值時使用 return str(value)# 注冊自定義路由轉換器# register_converter(自定義路由轉換器, ’別名’)register_converter(MobileConverter, ’mobile’)urlpatterns = [ # path(’pratice/register/<‘路由轉換器’:<變量>, views.TestQuery.as_view()), # path(’pratice/register/<int:age>’, views.TestQuery.as_view()), path(’pratice/register/<mobile:phone_num>’, views.TestQuery.as_view()),]

class TestQuery(View): def get(self, request,phone_num):#提取路徑參數是在路由中完成的,因為路徑是在路由系統中處理的print(’提取的路徑傳參:’,phone_num)return HttpResponse(’path()提取普通路徑參數:%s’ % phone_num)

效果展示

Django使用HTTP協議向服務器傳參方式小結

3.2 re_path()提取路徑參數

re_path(r’^pratice/register/(?P<phone_num>1[3-9]d{9})/$’, views.TestQuery.as_view()),

class TestQuery(View): def get(self, request,phone_num):#提取路徑參數是在路由中完成的,因為路徑是在路由系統中處理的print(’提取的路徑傳參:’,phone_num)return HttpResponse(’path()提取普通路徑參數:%s’ % phone_num)3.3 path()和re_path()如何選擇?

1)path()語法相對簡潔一些,如果沒有路徑參數要提取或者要提取的路徑參數可以使用默認的路由轉換器實現時,就選擇path()。2)re_path()語法相對復雜一些,但是,如果希望在匹配路由時,由自己編寫所有的正則式,就選擇re_path()。需要注意的是,在使用re_path()時,網絡地址正則表達式一定要寫完整,要有嚴格的開頭和結尾

4. 請求頭

可以通過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).

class HeadersParamView(View): '''提取請求頭參數''' def get(self, request):# 獲取請求頭中文件的類型ret = request.META.get(’CONTENT_TYPE’)return http.HttpResponse(’go’)5. 其他常用HttpRequest對象屬性

method:一個字符串,表示請求使用的HTTP方法,常用值包括:’GET’、’POST’。FILES:一個類似于字典的對象,包含所有的上傳文件。COOKIES:一個字符串,包含了瀏覽器自動發送的cookie緩存數據。user:請求中認證出來的用戶對象。

到此這篇關于Django使用HTTP協議向服務器傳參方式小結的文章就介紹到這了,更多相關Django HTTP協議向服務器傳參內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
三级黄色片在线观看| av网站大全在线| 亚洲男人电影天堂| 精品人妻一区二区乱码| 日本激情视频在线| 国产精品成人**免费视频| 欧美乱大交xxxxx另类电影| 成人精品一二区| 日本最黄一级片免费在线| 欧美精品一区二区三区在线四季 | 91视频免费网址| 亚洲经典在线看| 国产精品美女久久久免费| 国产成人免费9x9x人网站视频| 91免费在线视频网站| 小次郎av收藏家| 成人亚洲激情网| 久久电影网站中文字幕 | sesexxxx| 337p日本欧洲亚洲大胆色噜噜| 国产强伦人妻毛片| 青草国产精品| 中文字幕一区二区三区四区五区| 视频亚洲一区二区| 国产日韩欧美电影在线观看| 成人xxxx| 国产欧美一区二区精品婷婷 | 国产无遮挡一区二区三区毛片日本| 国产亚洲精品精品精品| 国产精品亚洲欧美| 综合国产精品久久久| 伊人春色精品| 一区二区三区 日韩| 91福利国产在线观看菠萝蜜| 中文字幕制服丝袜在线| 欧美亚洲激情| 丰满少妇一区二区三区专区| 日韩电影免费一区| 久久久久久久久久91| 日本成人网址| 天堂一区二区三区| а√天堂资源官网在线资源| 57pao成人国产永久免费| 欧美一卡2卡三卡4卡5免费| 久久6精品影院| 日本黄网免费一区二区精品| 欧美熟妇精品一区二区| 欧美一区二区三区网站| 99re6在线视频精品免费| 国产黄色在线网站| 欧美色图国产精品| 久久精品人人做人人综合| 欧美日韩国产综合视频在线观看 | 亚洲一二三区在线观看| 在线丨暗呦小u女国产精品| 亚洲第一搞黄网站| 久久久www成人免费精品张筱雨| 快播亚洲色图| 免费拍拍拍网站| 久久这里只有精品国产| 欧洲有码在线视频| 深夜视频一区二区| 美女尤物国产一区| 欧美日韩国产经典色站一区二区三区| 日韩av电影中文字幕| 国产v亚洲v天堂无码久久久| 91美女免费看| 久久久久久久久久久久久久久久久久久| 欧美网站免费| 少妇精品久久久| 欧美国产日韩精品免费观看| 色多多国产成人永久免费网站| 天堂一区二区三区| 久久久久久久久久99| 国产专区中文字幕| 福利电影一区| 国产精品美女久久久久久久| 久久影院资源网| 国产在线观看一区二区三区| 欧美一级免费在线| 九九热这里有精品视频| 日本精品一二区| 黄在线免费观看| 模特精品在线| 中文字幕在线观看不卡| 欧美激情中文字幕乱码免费| 99热自拍偷拍| 91美女精品网站| 国产丝袜在线| 日本成人在线电影网| 精品偷拍各种wc美女嘘嘘| 国产资源第一页| 亚洲视频在线观看免费视频| 91涩漫在线观看| 日韩激情视频在线观看| 日韩精品中文字幕在线观看| 一区二区三区四区欧美| 亚洲 国产 日韩 欧美| 在线观看黄av| 日韩不卡一区二区三区 | 日本欧洲一区| 欧美区一区二| 精品999久久久| 国产精品又粗又长| 午夜视频福利在线| 国产一区二区色噜噜| 国产精品每日更新| 91深夜福利视频| 国产精品久久久精品四季影院| 色欲久久久天天天综合网| 日韩av影片| 成人h动漫精品| 欧洲美女7788成人免费视频| 黄色一级片黄色| 国产精品无码AV| 白白色在线观看| 亚洲黄色成人| 日韩精品中文字幕在线| 日韩福利视频在线| 欧美6699| 久久99久久人婷婷精品综合 | 91久久爱成人| 中文字幕亚洲高清| 97在线超碰| 国产精品久久久一区麻豆最新章节| 国产精品青青在线观看爽香蕉 | 成人h动漫精品| 国产精品久久电影观看| 成人羞羞国产免费网站| 四虎成人精品在永久在线观看| 午夜在线小视频| 丁香亚洲综合激情啪啪综合| 日本道色综合久久影院| 激情综合五月网| 亚洲按摩av| 亚洲视频在线观看三级| 久久婷婷国产综合尤物精品| 91theporn国产在线观看| 国产亚洲欧美日韩精品一区二区三区 | 成人黄色国产精品网站大全在线免费观看 | 久久久一本精品99久久精品66| 国产精品呻吟久久| 亚洲视频国产精品| 91精品国产黑色紧身裤美女| 成年人在线看片| 成人av影视| 精品一区二区三区在线观看国产| 日本精品性网站在线观看| 欧美极品视频在线观看| 一区二区乱码| 粉嫩嫩av羞羞动漫久久久| 国产日韩在线亚洲字幕中文| 波多野结衣小视频| 韩国三级成人在线| 欧美一区二区三区的| 黄色小视频免费网站| 校园春色影音先锋| 波波电影院一区二区三区| 国产欧美综合精品一区二区| 欧美自拍第一页| 婷婷亚洲最大| 国模吧一区二区三区| 性高潮久久久久久| 你懂的在线视频| 日本一二三四高清不卡| 日本国产欧美一区二区三区| 久久国产黄色片| 精品国产亚洲日本| 日韩av影片在线观看| jizz中文字幕| 精品众筹模特私拍视频| 欧美日韩一区二区电影| 欧美熟妇精品一区二区| 黄色免费网站在线| 欧美性xxxxx极品| 激情成人在线观看| se在线电影| 欧美日韩精品二区| 日韩成人av免费| 动漫一区在线| 欧美系列亚洲系列| 99久久国产精| xx欧美视频| 亚洲成成品网站| 久久高清内射无套| 日本不卡视频| 午夜影院久久久| 成人区人妻精品一区二| 久草在线视频网站| 欧美一区永久视频免费观看| 亚洲乱码国产乱码精品精大量| 老司机深夜福利在线观看| 91精品欧美综合在线观看最新| 五级黄高潮片90分钟视频| 周于希免费高清在线观看| 日韩av在线直播| 男人午夜免费视频| 亚洲国产精品91| 国产精品12| 激情亚洲综合网|