Django Rest Framework之解析器与渲染器

Django Rest Framework之解析器与渲染器

一:解析器

解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程。
本质就是对请求体中的数据进行解析。
在了解解析器之前~大家要先知道Accept以及ContentType请求头。
Accept是告诉对方我能解析什么样的数据,通常也可以表示我想要什么样的数据。
ContentType是告诉对方我给你的是什么样的数据类型。

那大家想一下,解析器工作原理的本质应该是什么:就是拿到请求的ContentType来判断前端给我的数据类型是什么,然后我们去拿相应的解析器去解析数据。

1.1 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中。
也就是说我们之前能在request中能到的各种数据是因为用了不同格式的数据解析器。

1.2 DRF的解析器

我们想一个问题什么时候解析器会被调用呢?是不是在request.data拿数据的时候,所以说请求数据都在request.data中,那我们看下这个Request类里的dataDjango 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之解析器与渲染器
也就是说我们的DRF支持Json,Form表单的请求,包括多种文件类型的数据
Django Rest Framework之解析器与渲染器
可以在我们的视图中配置视图级别的解析器
Django Rest Framework之解析器与渲染器

二:渲染器

渲染器就是友好的展示数据,DRF给我们提供的渲染器有
Django Rest Framework之解析器与渲染器
我们在浏览器中展示的DRF测试的那个页面就是通过浏览器的渲染器来做到的,当然我们可以展示Json数据类型

发布了45 篇原创文章 · 获赞 3 · 访问量 1510

猜你喜欢

转载自blog.csdn.net/pcn01/article/details/103974373