日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Django drf請求模塊源碼解析

瀏覽:221日期:2024-09-04 16:12:05

DRF 框架,全稱為 Django Rest Framework,是 Django 內置模塊的擴展,用于創建標準化 RESTful API;它利用 ORM 映射數據庫,并自定義序列化數據進行返回,多用于前后端分離項目

項目地址:

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),我們進入方法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對象添加了上下文request和encoding

第二句返回了一個Request對象,點擊進入查看

Django drf請求模塊源碼解析

我們可以分析出,內部對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對象。接下來我們可以通過案例演示

案例演示

Django drf請求模塊源碼解析

我們創建了TestView視圖,視圖函數中打印了3個request屬性,并且在response上打了一個斷點,接下來通過url訪問視圖,進入斷點如下,

Django drf請求模塊源碼解析

我們可以清楚的看到:

request是drf的Request對象 request下有data屬性,query_params屬性,但是沒有GET屬性

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

Django drf請求模塊源碼解析

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

<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) # 拓展,兼容性最強,3種請求方式都可以 return Response('drf post ok')

我們都知道提交數據一般有3種方式

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

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

Django drf請求模塊源碼解析

我們查看pycharm打印結果

<QueryDict: {’a’: [’1’]}><QueryDict: {’a’: [’1’]}><QueryDict: {’a’: [’1’]}>

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

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

Django drf請求模塊源碼解析

<QueryDict: {’a’: [’1’]}><QueryDict: {’a’: [’1’]}><QueryDict: {’a’: [’1’]}>

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

最后我們使用application/json提交請求數據,并請求API

Django drf請求模塊源碼解析

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

<QueryDict: {}><QueryDict: {}>{’a’: 1}

所以request.data兼容性最強

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

到此這篇關于Django(48)drf請求模塊源碼分析 的文章就介紹到這了,更多相關Django drf源碼內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
福利一区和二区| 一区免费视频| 久久精品av麻豆的观看方式| 日本欧美在线| 国产精品密蕾丝视频下载| 欧美aⅴ一区二区三区视频| 精品少妇一区| 日韩国产在线| 国产精品毛片在线| 久久国产三级精品| 国产精品啊v在线| 福利一区视频| 99香蕉国产精品偷在线观看 | 高清av一区| 99精品网站| 综合欧美精品| 老牛国内精品亚洲成av人片| 日韩电影免费网站| 男人的天堂久久精品| 国产欧美三级| 亚洲午夜在线| 亚洲理论在线| 日韩一区三区| 中文字幕中文字幕精品| 久久精品国产99国产| 亚洲一级网站| 69堂精品视频在线播放| 天堂8中文在线最新版在线| 视频精品一区二区| 高清一区二区| 亚洲青青久久| 国产网站在线| 婷婷亚洲成人| 日韩欧美看国产| 亚州欧美在线| 欧洲av不卡| 日本中文字幕一区二区视频| 亚洲性色av| 久久国产尿小便嘘嘘| 欧美日韩色图| 精品国产亚洲一区二区三区在线| 黄色日韩在线| 黄色在线观看www| 亚洲毛片一区| 久久一区二区三区电影| 国产精品一区二区三区av麻 | 麻豆国产在线| 亚洲精品看片| 欧美午夜精品一区二区三区电影| 日本在线视频一区二区| 久久久久国产| 国产精品羞羞答答在线观看| 99热免费精品| 成人片免费看| 欧美精品三级在线| 国产免费成人| 欧美精品高清| 美女久久久精品| 蜜桃久久av一区| 91精品一区国产高清在线gif| 国产伦乱精品| 亚洲精选成人| 国产毛片一区| 1024精品一区二区三区| 国产精品一区二区av交换| 亚洲欧美日韩高清在线| 国产videos久久| 久久激情综合网| 亚洲影视一区二区三区| 影院欧美亚洲| 99久久激情| 日韩免费看片| 福利视频一区| 精品三级av在线导航| 国产欧美精品久久| 亚洲精品第一| 亚洲一区中文| 午夜精品婷婷| 1024精品久久久久久久久| 成人国产精品一区二区免费麻豆| 久久久免费人体| 九一精品国产| 9999国产精品| 国产一区二区三区四区大秀 | 美腿丝袜亚洲一区| 亚洲精品伊人| 天堂成人国产精品一区| 91伊人久久| 欧美日韩亚洲国产精品| 日韩一区二区三区四区五区 | 中文字幕日本一区二区| 激情综合在线| 亚洲电影在线| 99re国产精品| 亚洲综合日本| 影音先锋久久精品| 亚洲免费毛片| 日韩二区在线观看| 国产精品日韩欧美一区| 91精品国产自产观看在线| 国产精品婷婷| 国产精品毛片在线| 视频一区视频二区中文| 国产视频一区三区| 国产一区白浆| 亚洲精品观看| 亚洲开心激情| 国产日韩在线观看视频| 美女久久精品| 日韩不卡视频在线观看| 999国产精品999久久久久久| 久久一区二区三区喷水| 99re国产精品| 日本在线成人| 麻豆国产欧美日韩综合精品二区| 欧美aaaaaa午夜精品| 麻豆视频在线观看免费网站黄| 亲子伦视频一区二区三区| 欧美日韩国产一区二区三区不卡| 国产午夜精品一区二区三区欧美| 亚州精品视频| 国产精品视频3p| 中文字幕色婷婷在线视频| 婷婷亚洲五月| 久久亚洲电影| 麻豆精品视频在线观看| 国产精品一区免费在线| 伊人久久亚洲美女图片| 综合亚洲色图| 里番精品3d一二三区| 欧洲亚洲一区二区三区| 亚洲一区观看| 国产精品永久| 欧美午夜精彩| 欧美日韩网址| 日韩不卡免费高清视频| 免费精品国产的网站免费观看| 蜜臀国产一区二区三区在线播放| 欧美专区一区| 久久久久国产| 日韩精品视频一区二区三区| 久久久亚洲欧洲日产| 最新亚洲一区| 国产激情欧美| 黄色精品网站| 久久不卡国产精品一区二区| 欧美亚洲激情| 日韩精品高清不卡| 欧美日韩视频免费观看| 日韩精品成人| 久久久久国产一区二区| 最新国产精品| 久久久夜夜夜| 国产精品igao视频网网址不卡日韩 | 亚洲精华国产欧美| 国产日韩欧美三区| 在线日韩中文| 久久精品国产亚洲aⅴ| 蘑菇福利视频一区播放| 国产成人免费| 欧美日韩1区| 91九色精品| 精品视频网站| 中文字幕一区二区三区日韩精品 | 日韩欧美中文在线观看| 亚洲www啪成人一区二区| 青青草国产精品亚洲专区无| 激情久久五月| 亚洲黄色网址| 国产欧美视频在线| 久久国产福利| 亚洲高清久久| 国产a亚洲精品| 欧美日韩伊人| 日韩视频一二区| 亚洲二区精品| av免费不卡国产观看| 免费在线亚洲欧美| 日本不卡一区二区| 免费一级片91| re久久精品视频| 久久久人人人| 免费看av不卡| 日产精品一区二区| 国产精品密蕾丝视频下载| 亚洲精品在线二区| 亚洲免费网址| 亚洲国产一区二区三区在线播放| 91av亚洲| 九九九精品视频| 欧美天堂一区| 日韩欧美中文字幕电影| 综合激情一区| 一区二区电影| 中文字幕中文字幕精品| 久久国产高清| 日韩精品一二区| 最新国产精品| 日韩精品一区二区三区中文| 亚洲精品第一|