校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Django drf請求模塊源碼解析

Django drf請求模塊源碼解析

熱門標(biāo)簽:地圖標(biāo)注自己和別人標(biāo)注區(qū)別 商家地圖標(biāo)注海報 聊城語音外呼系統(tǒng) 騰訊地圖標(biāo)注沒法顯示 ai電銷機(jī)器人的優(yōu)勢 南陽打電話機(jī)器人 海外網(wǎng)吧地圖標(biāo)注注冊 孝感營銷電話機(jī)器人效果怎么樣 打電話機(jī)器人營銷

DRF 框架,全稱為 Django Rest Framework,是 Django 內(nèi)置模塊的擴(kuò)展,用于創(chuàng)建標(biāo)準(zhǔn)化 RESTful API;它利用 ORM 映射數(shù)據(jù)庫,并自定義序列化數(shù)據(jù)進(jìn)行返回,多用于前后端分離項目

項目地址:

https://github.com/encode/django-rest-framework

請求模塊:request對象

源碼入口

APIView類中dispatch方法中的:request=self.iniialize_request(*args, **kwargs),源碼如下:

def initialize_request(self, request, *args, **kwargs):
    """
    Returns the initial request object.
    """
    parser_context = self.get_parser_context(request)

    return Request(
        request,
        parsers=self.get_parsers(),
        authenticators=self.get_authenticators(),
        negotiator=self.get_content_negotiator(),
        parser_context=parser_context
    )

源碼分析

源碼很簡單,第1句parser_context = self.get_parser_context(request),我們進(jìn)入方法get_parser_context查看源碼:

"""
Returns a dict that is passed through to Parser.parse(),
as the `parser_context` keyword argument.
"""
# Note: Additionally `request` and `encoding` will also be added
#       to the context by the Request object.
return {
    'view': self,
    'args': getattr(self, 'args', ()),
    'kwargs': getattr(self, 'kwargs', {})
}

上面的代碼的意思是:返回一個解析的字典以便于Parser.parse()去解析,另外還通過Request對象添加了上下文requestencoding

第二句返回了一個Request對象,點擊進(jìn)入查看

我們可以分析出,內(nèi)部對request做了二次封裝,_request是一個HttpRequest對象,并且Request類中還有__getattr__此方法,代碼如下:

def __getattr__(self, attr):
    """
    If an attribute does not exist on this instance, then we also attempt
    to proxy it to the underlying HttpRequest object.
    """
    try:
        return getattr(self._request, attr)
    except AttributeError:
        return self.__getattribute__(attr)

意思是如果這個實例上不存在一個屬性,那么我們也會嘗試將其代理到底層HttpRequest對象。接下來我們可以通過案例演示

案例演示

我們創(chuàng)建了TestView視圖,視圖函數(shù)中打印了3個request屬性,并且在response上打了一個斷點,接下來通過url訪問視圖,進(jìn)入斷點如下,

我們可以清楚的看到:

  • request是drfRequest對象
  • request下有data屬性,query_params屬性,但是沒有GET屬性

上面還有一個Protected Attributes屬性,里面包含了_request屬性

我們可以看到_requestWSGIHttpRequest對象,所以它會有GET屬性,所以我們視圖中打印的request.GET實際上和request._request.GET是一樣的,因為request沒有GET屬性,所以它就會訪問_request中的GET屬性,最后我們查看打印結(jié)果,如下:

QueryDict: {'a': ['1']}>
QueryDict: {'a': ['1']}>
QueryDict: {'a': ['1']}>

同樣的,POST請求也是如此,我們在視圖中添加POST的請求方式,如下:

def post(self, request, *args, **kwargs):
    print(request.POST)  # 兼容
    print(request._request.POST)  # 二次封裝
    print(request.data)  # 拓展,兼容性最強(qiáng),3種請求方式都可以
    return Response("drf post ok")

我們都知道提交數(shù)據(jù)一般有3種方式

  • multipart/form-data
  • application/x-www-form-urlencoded
  • application/json

首先我們使用multipart/form-data提交請求數(shù)據(jù),并請求API

我們查看pycharm打印結(jié)果

QueryDict: {'a': ['1']}>
QueryDict: {'a': ['1']}>
QueryDict: {'a': ['1']}>

可以看到multipart/form-data這種請求方式,都能打印出來

接著我們使用application/x-www-form-urlencoded提交請求數(shù)據(jù),并請求API

QueryDict: {'a': ['1']}>
QueryDict: {'a': ['1']}>
QueryDict: {'a': ['1']}>

可以看到application/x-www-form-urlencoded這種請求方式,都能打印出來

最后我們使用application/json提交請求數(shù)據(jù),并請求API

可以看到application/json這種請求方式,只有request.data能打印出來

QueryDict: {}>
QueryDict: {}>
{'a': 1}

所以request.data兼容性最強(qiáng)

總結(jié)drfrequest進(jìn)行了二次封裝,request._request就是原生的WSGIRequest原生request的屬性和方法都可以被drfrequest對象直接訪問(兼容)drf請求的所有url拼接參數(shù)均被解析到query_params中,所有的數(shù)據(jù)包均被解析到data中其中post請求,request.data的兼容性最強(qiáng),能兼容前臺傳輸?shù)?code>json格式的數(shù)據(jù)

到此這篇關(guān)于Django(48)drf請求模塊源碼分析 的文章就介紹到這了,更多相關(guān)Django drf源碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django DRF APIView源碼運行流程詳解
  • Django DRF認(rèn)證組件流程實現(xiàn)原理詳解
  • Django DRF路由與擴(kuò)展功能的實現(xiàn)
  • django drf框架自帶的路由及最簡化的視圖
  • django drf框架中的user驗證以及JWT拓展的介紹
  • Django框架之DRF 基于mixins來封裝的視圖詳解
  • DRF跨域后端解決之django-cors-headers的使用
  • django DRF圖片路徑問題的解決方法

標(biāo)簽:聊城 撫州 牡丹江 楊凌 六盤水 揚州 南寧 迪慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Django drf請求模塊源碼解析》,本文關(guān)鍵詞  Django,drf,請求,模塊,源碼,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Django drf請求模塊源碼解析》相關(guān)的同類信息!
  • 本頁收集關(guān)于Django drf請求模塊源碼解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲制服丝袜av| 国产精品人成在线观看免费| 日韩中文字幕一区二区三区| 欧美私模裸体表演在线观看| 亚洲综合精品久久| 日韩一区二区在线看片| 乱中年女人伦av一区二区| 久久先锋影音av鲁色资源网| 国产高清在线精品| 中文字幕亚洲精品在线观看| 91黄视频在线观看| 五月天精品一区二区三区| 日韩丝袜美女视频| 成人自拍视频在线观看| 亚洲色图清纯唯美| 欧美日韩精品免费观看视频| 麻豆精品一区二区三区| 国产色产综合色产在线视频| 日本乱人伦一区| 免费观看在线色综合| 欧美国产精品中文字幕| 91久久线看在观草草青青| 日韩高清一区在线| 国产精品国产三级国产aⅴ中文| 日本高清不卡视频| 韩国av一区二区三区| 亚洲欧美激情一区二区| 91精品国产综合久久婷婷香蕉 | 亚洲国产精品av| 91蜜桃视频在线| 久久国产精品一区二区| 中文字幕一区在线观看| 欧美一区二区精品| 93久久精品日日躁夜夜躁欧美| 日韩av中文在线观看| 国产精品久久免费看| 欧美精品免费视频| 91捆绑美女网站| 激情综合网天天干| 亚洲成av人影院| 国产精品免费久久久久| 在线播放中文一区| 91在线视频18| 国产麻豆视频一区二区| 日韩中文字幕亚洲一区二区va在线 | 五月天亚洲婷婷| 国产偷国产偷精品高清尤物| 国产麻豆精品在线观看| 婷婷开心激情综合| 国产精品不卡一区二区三区| 精品美女一区二区| 欧美久久久影院| 一本大道久久a久久综合| 国产一区 二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 中文字幕欧美日本乱码一线二线 | 精品国产区一区| 欧美老女人第四色| 91色在线porny| 成人免费毛片高清视频| 国产曰批免费观看久久久| 日韩精品成人一区二区在线| 一区二区三区丝袜| 国产精品久久久久毛片软件| 久久无码av三级| 日韩区在线观看| 欧美一区二区三区在线观看视频| 91激情五月电影| 欧洲一区二区三区在线| 91啪在线观看| 色吊一区二区三区| 91精品福利视频| 91豆麻精品91久久久久久| 91蜜桃网址入口| 色综合欧美在线| 91论坛在线播放| 色999日韩国产欧美一区二区| 国产91综合网| 成人av在线看| 91在线观看视频| 色哟哟在线观看一区二区三区| 99在线精品一区二区三区| 99久久精品费精品国产一区二区| 9久草视频在线视频精品| 91一区二区在线观看| 色综合久久九月婷婷色综合| 欧美最新大片在线看| 欧美色成人综合| 欧美一区二区三区免费在线看| 欧美一区二区在线不卡| 久久先锋影音av鲁色资源| 欧美国产日韩亚洲一区| 亚洲伦理在线精品| 亚洲第一福利一区| 麻豆精品新av中文字幕| 国产精品中文字幕日韩精品 | 日韩黄色片在线观看| 五月婷婷激情综合| 麻豆一区二区三区| 国产大陆a不卡| av一二三不卡影片| 欧美日韩亚洲综合在线| 国产无一区二区| 日韩一区二区高清| 国产亚洲自拍一区| 国产精品成人在线观看| 亚洲v中文字幕| 国产精品一区一区三区| 99v久久综合狠狠综合久久| 欧美美女一区二区在线观看| 国产精品国产三级国产普通话三级| 国产精品久久久久桃色tv| 亚洲电影在线免费观看| 狠狠色丁香久久婷婷综| 99久久伊人久久99| 91精品国产入口| 国产农村妇女毛片精品久久麻豆 | 国产精品视频线看| 亚洲无线码一区二区三区| 韩国毛片一区二区三区| 99re成人在线| 欧美xxxxx裸体时装秀| 亚洲老司机在线| 精品一区二区三区视频在线观看| 不卡的电视剧免费网站有什么| 欧美日韩电影在线| 欧美国产精品中文字幕| 日韩av网站免费在线| 91视频你懂的| www国产成人| 午夜精品一区二区三区三上悠亚| 国产成人免费高清| 在线综合视频播放| 亚洲免费av高清| 国产成人亚洲综合色影视| 88在线观看91蜜桃国自产| 中文字幕一区三区| 久久9热精品视频| 9191久久久久久久久久久| 成人免费一区二区三区在线观看| 久久99精品久久久久| 欧美网站一区二区| 国产精品久久久久一区| 极品少妇xxxx精品少妇| 91精品国产一区二区人妖| 亚洲精品成人少妇| 丁香啪啪综合成人亚洲小说| 26uuu色噜噜精品一区二区| 天天综合日日夜夜精品| 欧美午夜精品久久久久久孕妇| 欧美国产激情二区三区| 看电视剧不卡顿的网站| 欧美日韩免费观看一区三区| 亚洲免费高清视频在线| 91在线视频播放| |精品福利一区二区三区| 成人午夜私人影院| 久久精品在线观看| 国产一区二区三区av电影| 欧美精品三级日韩久久| 五月天国产精品| 欧美日韩日本视频| 亚洲成在线观看| 精品视频在线免费| 午夜国产不卡在线观看视频| 91福利精品第一导航| 一区二区在线观看视频在线观看| 91视频一区二区三区| 亚洲欧美偷拍卡通变态| 99视频精品免费视频| 亚洲男人的天堂网| 色婷婷精品久久二区二区蜜臂av| 亚洲视频一区二区免费在线观看| 成人h动漫精品| 亚洲美女视频在线观看| 欧美亚洲国产一区二区三区| 亚洲国产精品自拍| 在线观看91av| 激情欧美一区二区| 国产午夜精品久久| 99久久免费视频.com| 亚洲精品福利视频网站| 欧美日本韩国一区| 激情亚洲综合在线| 国产三级三级三级精品8ⅰ区| 国产不卡视频在线播放| 亚洲天堂精品视频| 精品视频色一区| 久久99精品久久久| 欧美激情中文字幕| 日本高清不卡视频| 免费在线观看视频一区| 久久人人爽爽爽人久久久| 成人国产精品免费网站| 亚洲图片欧美一区| 精品久久久久久久久久久久包黑料| 国产一区二区调教| 亚洲人成人一区二区在线观看 | 91丨porny丨户外露出| 亚洲一区视频在线|