欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Django使用HTTP協議向服務器傳參方式小結

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

熱門標簽:宿遷星美防封電銷卡 百度地圖標注沒有了 外呼并發線路 西藏房產智能外呼系統要多少錢 地圖標注審核表 長沙高頻外呼系統原理是什么 ai電銷機器人源碼 ai電話機器人哪里好 湛江智能外呼系統廠家

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

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

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

形如:?key1=value1key2=value2
比如:http://127.0.0.1:8000/?name =lxage=0中的?name =lx

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

class TestQuery(View):

    def get(self, request):
        # 獲取查詢字符串參數name、age
        name = request.GET.get('name', 'lx')
        age = request.GET.get('age', '0')

        return HttpResponse('查詢字符串參數:%s  %s' % (name, age))

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

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

2. 提取請求體數據

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

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

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

class TestQuery(View):

    def post(self, request):
        # 獲取表單類型請求體參數中的username、password
        username = request.POST.get('username')
        password = request.POST.get('password')

        return HttpResponse('表單類型請求體參數:%s  %s' % (username, password))

重要提示:

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

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、password
        username = json_dict.get('username')
        password = json_dict.get('password')

        return HttpResponse('表單類型請求體參數:%s  %s' % (username, password))

結果展示:

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)

路由中提取路徑參數時,使用的關鍵字,必須跟視圖中參數名一致
思考:
實現需求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
}

源碼解析:

實現需求2

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

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

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

from django.urls import path, register_converter
from . import views
class 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)

效果展示

3.2 re_path()提取路徑參數

re_path(r'^pratice/register/(?Pphone_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項目如何獲得SSL證書與配置HTTPS
  • Django框架HttpRequest對象用法實例分析
  • Django框架HttpResponse對象用法實例分析
  • Django的HttpRequest和HttpResponse對象詳解
  • Django使用httpresponse返回用戶頭像實例代碼
  • 在Lighttpd服務器中運行Django應用的方法

標簽:海南 林芝 盤錦 寧夏 普洱 大同 漯河 南平

巨人網絡通訊聲明:本文標題《Django使用HTTP協議向服務器傳參方式小結》,本文關鍵詞  Django,使用,HTTP,協議,向,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Django使用HTTP協議向服務器傳參方式小結》相關的同類信息!
  • 本頁收集關于Django使用HTTP協議向服務器傳參方式小結的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    中国极品少妇videossexhd| 99久久精品一区| 国产 日韩 欧美大片| 亚洲 小说 欧美 激情 另类| 欧美精品日韩一区| 亚洲综合在线免费观看| 99这里都是精品| 欧美一区二区三区爽爽爽| 欧美国产综合一区二区| 国产美女精品在线| 精品人体无码一区二区三区| 久久噜噜亚洲综合| 极品少妇xxxx偷拍精品少妇| 免费看的黄色网| 国产亚洲欧美激情| 国产乱理伦片在线观看夜一区| 99久久99久久精品免费看小说.| 久久青草欧美一区二区三区| 狠狠色丁香久久婷婷综合丁香| 99久久99久久精品免费看小说.| 久久久久久久久久久电影| 国精产品一区一区三区mba视频 | 国产日产欧产精品推荐色| 国产综合一区二区| 精品久久久久久久久久久久久久久久久| 三级久久三级久久久| av av在线| 日韩欧美国产精品| 精品一区二区三区av| 四季av中文字幕| 国产精品网曝门| 91亚洲国产成人精品一区二区三 | 久久人妻无码aⅴ毛片a片app| 国产精品视频第一区| 不卡一区二区中文字幕| 欧美丝袜丝交足nylons图片| 三级久久三级久久| 久久久久无码精品国产sm果冻| 国产免费成人在线视频| 波波电影院一区二区三区| 欧美三级中文字幕在线观看| 日韩精品一卡二卡三卡四卡无卡| 香蕉网在线播放| 亚洲国产成人在线| 91免费看视频| 日韩精品一区二区三区在线| 国产一区二区免费在线| 色婷婷久久久综合中文字幕| 亚洲第一电影网| 欧美丰满老妇熟乱xxxxyyy| 国产精品美女久久福利网站| 欧美图片自拍偷拍| ww亚洲ww在线观看国产| 不卡的av在线播放| 欧美一卡二卡三卡| 国产精品一区二区久激情瑜伽| 91成人国产精品| 美女国产一区二区三区| 91精品国产闺蜜国产在线闺蜜| 亚洲成人综合网站| 手机毛片在线观看| 悠悠色在线精品| 性猛交ⅹxxx富婆video| 亚洲女女做受ⅹxx高潮| 黑人巨大精品欧美| |精品福利一区二区三区| 粉嫩av懂色av蜜臀av分享| 中文一区二区在线观看| 国模无码视频一区| 国产精品久久久久久亚洲伦| 91玉足脚交白嫩脚丫| 国产精品免费丝袜| 成年人在线观看av| 亚洲色图在线视频| 谁有免费的黄色网址| 亚洲综合色噜噜狠狠| 久久久精品成人| 亚洲不卡av一区二区三区| 日日摸夜夜添夜夜添精品视频| 老司机成人免费视频| 日本伊人精品一区二区三区观看方式| 夫妻性生活毛片| 免费成人av在线| 欧美视频一区二区| 国产精品一区在线观看你懂的| 在线91免费看| 不卡的电视剧免费网站有什么| 久久一二三国产| 国产 xxxx| 成人免费小视频| 国产亚洲精品熟女国产成人| 亚洲18色成人| 日本韩国视频一区二区| 国产一区二区三区四区五区入口| 在线电影一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产亚洲一区二区三区四区| 欧美图片自拍偷拍| 亚洲欧洲制服丝袜| av黄色免费在线观看| 麻豆成人av在线| 日韩一区二区三区在线| 亚洲妇女无套内射精| 亚洲欧洲精品一区二区三区 | 国产人成亚洲第一网站在线播放| 欧亚乱熟女一区二区在线| 亚洲久草在线视频| 日韩精品123区| 国产在线一区观看| 日韩免费观看高清完整版在线观看| 日韩精品国产一区| 亚洲视频一区二区在线观看| 永久免费看片视频教学| 国产一区亚洲一区| 337p日本欧洲亚洲大胆精品| 亚洲成人av免费在线观看| 亚洲一区二区偷拍精品| 色94色欧美sute亚洲线路一ni| 国产传媒一区在线| 国产人久久人人人人爽| 林心如三级全黄裸体| 久草精品在线观看| 精品毛片乱码1区2区3区| 国产精品久久无码| 五月天一区二区三区| 欧美精品日韩精品| 亚洲色偷偷色噜噜狠狠99网| 亚洲一区日韩精品中文字幕| 99re久久精品国产| 一区二区三区精品视频| 色婷婷av一区二区三区大白胸 | 国产在线国偷精品免费看| 精品日产卡一卡二卡麻豆| 久久精品一区二区免费播放| 日本大胆欧美人术艺术动态| 欧美大片在线观看一区二区| 欧美熟妇一区二区| 精品一区二区三区香蕉蜜桃 | 中文字幕 欧美 日韩| 一区二区高清在线| 欧美日韩国产成人在线免费| 国产白袜脚足j棉袜在线观看| 丝袜亚洲另类丝袜在线| 欧美一区二视频| 日本少妇色视频| 黑人巨大精品欧美一区| 国产视频一区在线观看| 日韩欧美国产成人精品免费| av在线不卡免费看| 一区二区三区四区蜜桃| 欧美精品自拍偷拍动漫精品| 欧美做受喷浆在线观看| 久久国内精品自在自线400部| 国产网红主播福利一区二区| 亚洲波多野结衣| 91麻豆高清视频| 日韩中文欧美在线| 2020日本不卡一区二区视频| 国产大屁股喷水视频在线观看| 不卡在线观看av| 亚洲chinese男男1069| 精品久久久影院| 污污视频网站在线免费观看| 成人白浆超碰人人人人| 亚洲午夜免费电影| 精品少妇一区二区三区在线播放| а天堂中文在线资源| 99视频在线观看一区三区| 亚洲国产成人高清精品| 精品国产乱码久久久久久牛牛 | 老司机午夜精品| 国产精品视频你懂的| 欧美亚洲动漫制服丝袜| 性色av蜜臀av色欲av| 国产成人午夜电影网| 一区二区视频在线| 精品理论电影在线| 91精品国自产在线偷拍蜜桃| 午夜免费福利影院| 国产精品一二三在| 亚洲精品久久久久久国产精华液| 日韩一区二区三免费高清| 国产一区二区三区视频播放| 日本少妇xxxx软件| 狠狠色狠狠色合久久伊人| 一区二区三区四区精品在线视频| 亚洲精品在线电影| 91福利国产精品| 中文字幕第二区| 91传媒理伦片在线观看| 国产福利一区二区三区视频在线| 亚洲一区二区三区自拍| 久久精品亚洲一区二区三区浴池| 欧美在线短视频| 国产一二三四区在线| 色诱av手机版| 国产高清精品久久久久| 天天做天天摸天天爽国产一区| 国产精品美女久久久久aⅴ国产馆| 555www色欧美视频|