zoukankan      html  css  js  c++  java
  • 前后端分离djangorestframework——解析渲染组件

    解析器

    解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程,本质就是对请求体中的数据进行解析

    Accept是告诉对方我能解析什么样的数据,通常也可以表示我想要什么样的数据

    ContentType是告诉对方我给你的是什么样的数据类型。

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

    Django的解析器

    我们请求进来请求体中的数据在request.body中,那也就证明,解析器会把解析好的数据放入request.body,在研究django时就知道request是WSGIRequest这个类。

    application/x-www-form-urlencoded:只能上传文本格式的文件,

    multipart/form-data:将文件以二进制的形式上传,这样可以实现多种类型的文件上传

    一个解析到request.POST,   request.FILES中,但是都没看到有json的解析器,话句话说,django默认没有json的解析器

    那么如果觉得不太信,可以测试下:

    url:

    view:

    用的url为/parser/test来测试:

    访问测试,相信你应该知道,这个数据并不是json格式的

     

    DRF的解析器

    DRF 的解析器都在这里面:from rest_framework import parsers,随便一个文件里导入,然后就可以看到,看名字就应该是这些解析器是干嘛的了

    更详细的就自己看源码研究

    简单的使用测试:

    url:

    view:

    其他没有再配置什么,启动直接访问:

    也可以给url加条件参数访问,确实是json格式的字符串:

    DRF的渲染器

    渲染器就是友好的展示数据,DRF给我们提供的渲染器有:

    上面那个返回的【解析器测试】的json字符串,就是通过浏览器的渲染器来做到的

    总结:

    其实有很多东西,需要看源码的逻辑才能看懂更多东西,这里只能展示一部分

  • 相关阅读:
    代码控制数据流量开关
    用wifi来调试应用程序
    详细解读LruCache类
    修改博客园默认的代码字体大小
    通过Gson解析Json数据
    Docker、Kubernetes的 CICD实现思路
    React中路由传参及接收参数的方式
    微信小程序开发工具调试没问题,真机调试Provisional headers are shown
    物联网卡三码
    【微信开发】-- 企业转账到用户
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/10428737.html
Copyright © 2011-2022 走看看