Django Rest framework解析器和渲染器详解


Posted in Python onJuly 25, 2019

解析器

解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程.

本质就是对请求体中的数据进行解析.

Content-type:用于声明我给你传的是什么类型的数据

  • application/x-ww-form-urlencoded 表单数据类型
  • multipart/form-data 文件
  • application/json(比如:request.body)
  • Accept:用于声明我能解析什么样的数据类型

Django中的解析器

我们的请求进来后,请求体中的数据是保存在request.body中的.

这就说明:==解析器会把解析好的数据放入request.body中.==

我们在视图中打印request的类型,便可知道request是WSGIRequest这个类的.

我们可以看下这个类的源码,我们是这样拿到request.POST数据的:

Django Rest framework解析器和渲染器详解

Django Rest framework解析器和渲染器详解

application/x-www-form-urlencoded不是不能上传文件,是只能上传文本格式的文件.

multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传.

一个解析到request.POST中,一个解析到request.FILES中.

也就是说,在Django中我们之所以能在request中得到各种数据类型,是因为我们使用了这些解析器.

DRF中的解析器

DRF的请求数据都在request.data中.

所以,我们就来看Request类中的data:

Django Rest framework解析器和渲染器详解

Django Rest framework解析器和渲染器详解

Django Rest framework解析器和渲染器详解

Django Rest framework解析器和渲染器详解

Django Rest framework解析器和渲染器详解

Django Rest framework解析器和渲染器详解

得到解析器后,调用解析器里的parse方法:

Django Rest framework解析器和渲染器详解

到这里,我们再看下DRF配置的默认的解析器的类都有哪些:

Django Rest framework解析器和渲染器详解

DEF支持Json、Form表单的请求,包括多种文件类型的数据:

Django Rest framework解析器和渲染器详解

我们也可以再视图中配置视图级别的解析器:

Django Rest framework解析器和渲染器详解


DRF中的渲染器

渲染器为我们友好地展示数据.

DRF为我们提供的渲染器有:

Django Rest framework解析器和渲染器详解

一个是Json的,一个是浏览器的.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
bpython 功能强大的Python shell
Feb 16 Python
利用Python破解验证码实例详解
Dec 08 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
numpy使用技巧之数组过滤实例代码
Feb 03 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
对python调用RPC接口的实例详解
Jan 03 Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 #Python
Django MEDIA的配置及用法详解
Jul 25 #Python
Django打印出在数据库中执行的语句问题
Jul 25 #Python
python requests指定出口ip的例子
Jul 25 #Python
Tornado实现多进程/多线程的HTTP服务详解
Jul 25 #Python
Python使用指定端口进行http请求的例子
Jul 25 #Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 #Python
You might like
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Windows下安装Django框架的方法简明教程
2018/03/28 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
python实现函数极小值
2019/07/10 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
python之随机数函数的实现示例
2020/12/30 Python
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
明星员工获奖感言
2014/08/14 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
保外就医申请书范文
2015/08/06 职场文书
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL