美文网首页
Django REST framework(四): DRF的解析

Django REST framework(四): DRF的解析

作者: 是立品啊 | 来源:发表于2021-01-21 20:42 被阅读0次

解析器是干什么的?因为前后端分离,前端可能采用json、xml、html等各种不同格式的内
容,后端必须要有一个解析器Parser来解析前端发送过来的数据,也就是翻译器!否则后端凭什
么看懂前端的数据?对应地,后端也有一个渲染器Render,和解析器是相反的方向,将后
端的数据翻译成前端能明白的数据格式。

  • 解析器和渲染器在数据传输过程中的作用
前端数据 ==》解析器(解析成后端能处理数据) ==》 逻辑数据 ==》渲染器(渲染成前端需要的数据)==》前端展示

REST框架内置的Parser类

Django原生解析数据的限制

Django原生的解析器对于post的数据,如果要从request.body中解析出来放到request.POST中,
那么必须同时满足两个条件:

  1. 请求头部 Content_type = 'application/x-www-form-urlencoded'
  2. 数据格式必须是: name=xxx&password=xxx&email=xxx.....

而对于前端发送过来的例如JSON格式的数据则无法处理(当然你自己处理也是可以的)。

DRF内置的数据解析器

DRF提供了一些额外的解析器帮我们处理各种格式。

DRF的parsers模块非常简单,只定义了几个解析器类:

  • BaseParser:解析器基类,以下四个类都直接继承它
  • JSONParser
  • FormParser
  • MultiPartParser
  • FileUploadParser

DRF在运行的时候如何知道该使用哪个解析器呢?

DRF将有效的解析器集定义为类的列表。当 request.data被访问时,REST框架将检查请求头
部的Content-Type 属性,以此来确定要使用哪个解析器来解析数据。
所以,要注意解析器只有在请求request.data的时候才会被调用!如果不需要data数据,那么
就不用解析。

相关文章

网友评论

      本文标题:Django REST framework(四): DRF的解析

      本文链接:https://www.haomeiwen.com/subject/ljvzcktx.html