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中的os.path路径模块中的操作方法总结
Jul 07 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python socket实现简单聊天室
Apr 01 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
python使用Flask操作mysql实现登录功能
May 14 Python
浅谈Python traceback的优雅处理
Aug 31 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
set在python里的含义和用法
Jun 24 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
离线状态下在jupyter notebook中使用plotly实例
Apr 24 Python
记录模型训练时loss值的变化情况
Jun 16 Python
Python如何读写CSV文件
Aug 13 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
set_include_path在win和linux下的区别
2008/01/10 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
vue实现跨域的方法分析
2019/05/21 Javascript
JS实现TITLE悬停长久显示效果完整示例
2020/02/11 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python循环语句之break与continue的用法
2015/10/14 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
Python地图绘制实操详解
2019/03/04 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
创业计划书的写作技巧及要点
2014/01/31 职场文书
cf收人广告词
2014/03/14 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
前台接待岗位职责
2015/02/03 职场文书
学期个人自我总结
2015/02/13 职场文书
同学毕业留言寄语
2015/02/27 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python