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 28 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
python函数修饰符@的使用方法解析
Sep 02 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
pandas处理csv文件的方法步骤
Oct 16 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
php函数之子字符串替换 str_replace
2011/03/23 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
javascript实现动态标签云
2015/10/16 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
国际贸易专业推荐信
2013/11/15 职场文书
园林毕业生自我鉴定范文
2013/12/29 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
体育教师求职信
2014/05/24 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
2014年副班长工作总结
2014/12/10 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书