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 Django模板的使用方法(图文)
Nov 04 Python
Python reduce()函数的用法小结
Nov 15 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python对象属性自动更新操作示例
Jun 15 Python
Python使用gRPC传输协议教程
Oct 16 Python
使用python判断你是青少年还是老年人
Nov 29 Python
Python 中Django安装和使用教程详解
Jul 03 Python
学python安装的软件总结
Oct 12 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
Python基础教程之输入输出和运算符
Jul 26 Python
Python 在局部变量域中执行代码
Aug 07 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
Views rows style模板重写代码
2011/05/16 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
thinkphp中ajax与php响应过程详解
2014/12/08 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
Javascript模块模式分析
2008/05/16 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
js使用心得分享
2015/01/13 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
简单谈谈Python的pycurl模块
2018/04/07 Python
python pandas修改列属性的方法详解
2018/06/09 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
母亲节感恩寄语
2014/02/21 职场文书
大专护理专业自荐信
2015/03/25 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers
Python内置数据类型中的集合详解
2022/03/18 Python