成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

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

用戶發(fā)送請(qǐng)求時(shí)攜帶的參數(shù)后端需要使用,而不同的發(fā)送參數(shù)的方式對(duì)應(yīng)了不同的提取參數(shù)的方式

利用HTTP協(xié)議向服務(wù)器傳參有幾種途徑?

1.查詢字符串?dāng)?shù)據(jù)(query string):

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

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

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

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

重要提示:提取查詢字符串參數(shù)不區(qū)分請(qǐng)求方式,即使客戶端進(jìn)行POST方式的請(qǐng)求,依然可以通過request.GET獲取請(qǐng)求中的查詢字符串參數(shù)。

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

2. 提取請(qǐng)求體數(shù)據(jù)

1)可以發(fā)送請(qǐng)求體數(shù)據(jù)的請(qǐng)求方式有:POST、PUT、PATCH、DELETE2)請(qǐng)求體數(shù)據(jù)格式不固定,常見的有:表單類型數(shù)據(jù)和JSON字符串類型,我們應(yīng)區(qū)別對(duì)待

2.1 表單類型請(qǐng)求體數(shù)據(jù)(Form Data)

前端發(fā)送的表單類型的請(qǐng)求體數(shù)據(jù),可以通過request.POST屬性獲取,并返回QueryDict對(duì)象。

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

重要提示:

request.POST只能用來獲取POST表單發(fā)送的請(qǐng)求體數(shù)據(jù)

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

2.2 非表單類型請(qǐng)求體數(shù)據(jù)(Non-Form Data):JSON

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

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

結(jié)果展示:

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

3. URL路徑參數(shù):提取URL路徑中的特定部分?jǐn)?shù)據(jù)

1)在定義路由時(shí),可以從URL中獲取特定部分的路徑參數(shù)2)Django的路由系統(tǒng)會(huì)將提取的路徑參數(shù)傳遞到視圖的內(nèi)部3)path()和re_path()都可以提取路徑參數(shù)

需求1:http://127.0.0.1:8000/pratice/register/18/提取路徑中的數(shù)字18需求2:http://127.0.0.1:8000/pratice/register/18500000000/提取路徑中的手機(jī)號(hào)18500000000

3.1 path()提取路徑參數(shù)

測(cè)試path()提取普通路徑參數(shù):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):#提取路徑參數(shù)是在路由中完成的,因?yàn)槁窂绞窃诼酚上到y(tǒng)中處理的print(’提取的路徑傳參:’,age)return HttpResponse(’path()提取普通路徑參數(shù):%s’ % age)

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

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

位置在django.urls.converters.py

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

源碼解析:

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

實(shí)現(xiàn)需求2

http://127.0.0.1:8000/pratice/register/18500000000/提取路徑中的手機(jī)號(hào)18500000000

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

在任意可以被導(dǎo)入的python文件中,都可以自定義路由轉(zhuǎn)換器

from django.urls import path, register_converterfrom . import viewsclass MobileConverter: '''自定義路由轉(zhuǎn)換器:匹配手機(jī)號(hào)''' # 匹配手機(jī)號(hào)碼的正則 regex = ’1[3-9]d{9}’ def to_python(self, value): # 將匹配結(jié)果傳遞到視圖內(nèi)部時(shí)使用 return int(value) def to_url(self, value): # 將匹配結(jié)果用于反向解析傳值時(shí)使用 return str(value)# 注冊(cè)自定義路由轉(zhuǎn)換器# register_converter(自定義路由轉(zhuǎn)換器, ’別名’)register_converter(MobileConverter, ’mobile’)urlpatterns = [ # path(’pratice/register/<‘路由轉(zhuǎn)換器’:<變量>, 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):#提取路徑參數(shù)是在路由中完成的,因?yàn)槁窂绞窃诼酚上到y(tǒng)中處理的print(’提取的路徑傳參:’,phone_num)return HttpResponse(’path()提取普通路徑參數(shù):%s’ % phone_num)

效果展示

Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)

3.2 re_path()提取路徑參數(shù)

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):#提取路徑參數(shù)是在路由中完成的,因?yàn)槁窂绞窃诼酚上到y(tǒng)中處理的print(’提取的路徑傳參:’,phone_num)return HttpResponse(’path()提取普通路徑參數(shù):%s’ % phone_num)3.3 path()和re_path()如何選擇?

1)path()語法相對(duì)簡(jiǎn)潔一些,如果沒有路徑參數(shù)要提取或者要提取的路徑參數(shù)可以使用默認(rèn)的路由轉(zhuǎn)換器實(shí)現(xiàn)時(shí),就選擇path()。2)re_path()語法相對(duì)復(fù)雜一些,但是,如果希望在匹配路由時(shí),由自己編寫所有的正則式,就選擇re_path()。需要注意的是,在使用re_path()時(shí),網(wǎng)絡(luò)地址正則表達(dá)式一定要寫完整,要有嚴(yán)格的開頭和結(jié)尾

4. 請(qǐng)求頭

可以通過request.META屬性獲取請(qǐng)求頭headers中的數(shù)據(jù),request.META為字典類型。常見的請(qǐng)求頭如:

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): '''提取請(qǐng)求頭參數(shù)''' def get(self, request):# 獲取請(qǐng)求頭中文件的類型ret = request.META.get(’CONTENT_TYPE’)return http.HttpResponse(’go’)5. 其他常用HttpRequest對(duì)象屬性

method:一個(gè)字符串,表示請(qǐng)求使用的HTTP方法,常用值包括:’GET’、’POST’。FILES:一個(gè)類似于字典的對(duì)象,包含所有的上傳文件。COOKIES:一個(gè)字符串,包含了瀏覽器自動(dòng)發(fā)送的cookie緩存數(shù)據(jù)。user:請(qǐng)求中認(rèn)證出來的用戶對(duì)象。

到此這篇關(guān)于Django使用HTTP協(xié)議向服務(wù)器傳參方式小結(jié)的文章就介紹到這了,更多相關(guān)Django HTTP協(xié)議向服務(wù)器傳參內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
极品中文字幕一区| 婷婷久久综合九色综合绿巨人 | 欧美日本韩国一区二区三区视频| 亚洲自拍偷拍麻豆| 亚洲成人资源| 亚洲欧洲国产日本综合| 欧美区高清在线| 久久久久久日产精品| 99这里只有精品| 精品精品欲导航| 成人国产精品免费观看视频| 精品少妇一区二区三区视频免付费 | 亚洲国产日韩av| 国产情侣一区| 亚洲黄一区二区三区| 亚洲永久字幕| 日韩电影免费在线看| 老牛嫩草一区二区三区日本| 免费成人av在线播放| 欧美三级日韩三级| 国产精品69毛片高清亚洲| 欧美这里有精品| 久久99久久99精品免视看婷婷| 欧美群妇大交群中文字幕| 国产一区二区电影| 欧美成人午夜电影| 94-欧美-setu| 国产精品国产三级国产aⅴ入口| 亚洲高清视频在线观看| 伊人性伊人情综合网| 亚洲一区二区三区免费观看| 亚洲国产cao| 在线视频一区二区三区| 精品一区二区三区久久| 精品欧美一区二区久久| 欧美成人69av| 综合久久久久久久| 国产精品毛片va一区二区三区| 亚洲一区国产视频| 色8久久精品久久久久久蜜| 国产一区二区视频在线| 亚洲精品一区二区三区在线观看| 欧美日韩一区在线视频| 亚洲另类中文字| 一本到不卡精品视频在线观看| 久久99精品网久久| 精品国产乱码久久久久久影片| 欧美日本二区| 亚洲国产美国国产综合一区二区| 欧美性欧美巨大黑白大战| 成人一级黄色片| 国产色综合一区| 亚洲日本激情| 免费国产亚洲视频| 精品美女被调教视频大全网站| 欧美日韩在线播放一区二区| 久久九九国产精品| 亚洲精品美女久久7777777| 日韩精品福利网| 欧美电影免费观看高清完整版| 欧美日韩亚洲一区二区三区在线 | 粉嫩在线一区二区三区视频| 久久精品一区二区三区四区| 99pao成人国产永久免费视频| 青青草国产精品亚洲专区无| 欧美精品一区二区三区久久久| 亚洲国产欧美日韩| 免费成人你懂的| 国产日韩欧美一区二区三区综合| 国产精品主播| 国产精品资源站在线| 欧美高清在线精品一区| 色88888久久久久久影院按摩| 处破女av一区二区| 亚洲激情av在线| 91精品国产综合久久精品图片| 欧美精品aa| 全国精品久久少妇| 久久欧美中文字幕| 免费永久网站黄欧美| 国产成人在线色| 亚洲欧美日韩精品久久久久| 欧美性videosxxxxx| 欧美日韩在线精品| 天堂一区二区在线免费观看| 日韩精品一区二区三区在线播放 | 亚洲电影成人| 美女视频第一区二区三区免费观看网站| 欧美白人最猛性xxxxx69交| 日韩亚洲欧美精品| 国产精品911| 亚洲国产精品自拍| 日韩视频在线观看一区二区| 国产精品免费看| 大白屁股一区二区视频| 亚洲图片欧美综合| 久久久国产精品午夜一区ai换脸| 蜜桃伊人久久| 国产美女视频一区| 亚洲在线中文字幕| 国产亚洲精品7777| 欧洲精品在线观看| 亚洲网址在线| 国产麻豆视频精品| 亚洲综合视频网| 久久美女高清视频| 在线一区二区视频| 亚洲成人资源| 成人国产精品免费观看| 日本欧美在线观看| 国产精品每日更新在线播放网址 | 成人爱爱电影网址| 日日夜夜精品视频天天综合网| 久久夜色精品一区| 欧美综合天天夜夜久久| 日韩午夜高潮| 94-欧美-setu| 国产一区二区三区四区五区入口| 亚洲一区在线视频| 欧美国产精品中文字幕| 日韩一区二区三区在线| 久久蜜桃精品| 亚洲经典视频在线观看| 91小宝寻花一区二区三区| 国产资源精品在线观看| 午夜精品视频在线观看| 中文字幕一区二区三区四区| 精品国产乱码久久久久久闺蜜| 色老头久久综合| 99精品国产高清一区二区| 91蜜桃婷婷狠狠久久综合9色| 国产剧情一区二区| 婷婷激情综合网| 一区二区三区资源| 国产精品久久一卡二卡| 精品av综合导航| 日韩一区和二区| 在线国产亚洲欧美| 午夜在线观看免费一区| 伊人久久综合| 91视频免费看| 顶级嫩模精品视频在线看| 久久se精品一区精品二区| 午夜精品久久久久久久久| 亚洲乱码国产乱码精品精可以看| 久久久精品综合| 精品区一区二区| 这里只有精品视频在线观看| 欧美一进一出视频| 尹人成人综合网| 国产精品jizz在线观看美国| 99久久精品国产一区二区三区| 成人一级片网址| 国产99精品国产| 国产成人亚洲综合a∨婷婷 | a级精品国产片在线观看| 激情另类小说区图片区视频区| 日本成人在线不卡视频| 丝袜脚交一区二区| 婷婷丁香久久五月婷婷| 日韩精品1区2区3区| 亚洲成人av资源| 亚洲国产精品久久艾草纯爱| 亚洲精品乱码久久久久久| 日韩毛片一二三区| 亚洲人吸女人奶水| 亚洲欧美色综合| 亚洲四区在线观看| 国产精品高潮呻吟| 国产精品久久久久久久久免费丝袜 | 欧美一区二区在线观看| 一本到不卡免费一区二区| 国产精品久久久久久模特| 亚洲黄色成人| 一区二区精品在线| 亚洲中字在线| 男人的天堂亚洲在线| 国产视频一区免费看| 夜夜嗨一区二区| 亚洲国产黄色| 亚洲国产mv| 中国成人亚色综合网站| 国产精品免费看| 久久精品一区二区国产| 色香蕉成人二区免费| 欧美性感一类影片在线播放| 欧美日韩高清在线| 欧美一卡2卡3卡4卡| 欧美变态tickling挠脚心| 久久综合精品国产一区二区三区| 久久精品一级爱片| 国产欧美中文在线| 日韩精品在线网站| 国产亚洲欧美中文| 国产精品美女久久久久久2018 | 波多野结衣一区二区三区| 色综合视频在线观看| 国产精品sss| 国产一级久久| 91黄色小视频|