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下singleton模式的实现方法
Jul 16 Python
Golang与python线程详解及简单实例
Apr 27 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
简单的Python调度器Schedule详解
Aug 30 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python实现画循环圆
Nov 23 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
详解python中的异常捕获
Dec 15 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 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实现框架(二)
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
vue实现扫码功能
2020/01/17 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
python+opencv实现动态物体识别
2018/01/09 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
python多进程间通信代码实例
2019/09/30 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
python操作链表的示例代码
2020/09/27 Python
几款好用的python工具库(小结)
2020/10/20 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
大一学生假期实习的自我评价
2013/10/12 职场文书
解除劳动合同协议书
2014/04/14 职场文书
弄虚作假心得体会
2014/09/10 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
php引用传递
2021/04/01 PHP
MySQL 计算连续登录天数
2022/05/11 MySQL