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基于更相减损术实现求解最大公约数的方法
Apr 04 Python
Python基于dom操作xml数据的方法示例
May 12 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
详解python编译器和解释器的区别
Jun 24 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
如何使用python进行pdf文件分割
Nov 11 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
python 实现PIL模块在图片画线写字
May 16 Python
解决Python安装cryptography报错问题
Sep 03 Python
Python爬取酷狗MP3音频的步骤
Feb 26 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 购物车实例(申精)
2009/05/11 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
python实现贪吃蛇小游戏
2020/03/21 Python
python解析yaml文件过程详解
2019/08/30 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
幼师求职自荐信
2014/05/31 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
暑期培训心得体会
2014/09/02 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
期中考试复习计划
2015/01/19 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
基层工作经历证明
2015/06/19 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android
css3带你实现3D转换效果
2022/02/24 HTML / CSS
nginx容器方式反向代理实战
2022/04/18 Servers