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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
python 上下文管理器使用方法小结
Oct 10 Python
深入理解Python分布式爬虫原理
Nov 23 Python
Python制作动态字符图的实例
Jan 27 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
浅析Python 多行匹配模式
Jul 24 Python
如何基于Python实现word文档重新排版
Sep 29 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加密解密实例分析
2015/12/25 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
script标签的 charset 属性使用说明
2010/12/04 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
JS的get和set使用示例
2014/02/20 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
python设计模式大全
2016/06/27 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python实现梯度下降法
2020/03/24 Python
Python实现删除某列中含有空值的行的示例代码
2020/07/20 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Linux内核产生并发的原因
2016/11/08 面试题
大学生求职信范文应怎么写
2014/01/01 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
工业设计专业自荐书
2014/06/05 职场文书
装修活动策划方案
2014/08/27 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
同学毕业留言寄语
2015/02/27 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
Elasticsearch 数据类型及管理
2022/04/19 Python