7.解析器

  • 依靠Content-Type对用户的请求体中的数据进行解析。

7.1django中的解析器

  • 前戏:django中的request.POST/request.body

  • request.POST中有值的条件:

    • 如果请求头中的:Content-Type:application/x-www-form-urlencoded。request.POST才有值。(去request.body中解析)

    • 数据格式必须要求: name=mei&age=20&gender=女

      如:

    ​ 1.form表单提交

    ​ 2.ajax提交数据是字典 默认会转换成 name=mei&age=20&gender=女 的格式

7.2rest_framework中解析器

from rest_framework.parsers import JSONParser,FormParser
class ParseView(APIView):
##"能解析Content-Type:
# application/json格式和application/x-www-form-urlencodeed"
parser_classes = [JSONParser,FormParser] def post(self,request,*args,**kwargs):
"""
允许用户发送JSON格式数据:
格式1:Content-Type : application/json
格式2:{"name":"aaa",age:"bbb"}
:param request:
:param args:
:param kwargs:
:return:
"""
#1.获取用户请求头:
#2.获取用户请求体
#3.根据用户请求头和parser_classes=[JSONParser,FormParser]中支持的请求头进行比较
#4JSONParser对象去请求体
#5.request.data触发解析
print(request.data)
print(type(request.data))#<class 'dict'>
return HttpResponse("ParaserView")
  • 如果要做上传操作
from rest_framework.parsers import FileUploadParser
在某个视图类添加:
class ParseView(APIView):
parser_classes = [FileUploadParser,]
def get(self,request,*args,**kwargs):
request.FILES
def post(self,request,*args,**kwargs):
...

7.3全局配置解析器

  • 使用解析器,可在全局配置,个别视图需要上传文件可以用局部解析器配置:parser_classes = [FileUploadParser,]
settings.py
REST_FRAMEWORK = [
"DEFAULT_PARSER_CLASSES":[
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
...
]
]
  • 源码流程 & 本质:

    • 本质:

      • 请求头
      • 状态码
      • 请求方法
    • 源码流程
      • dispatch
      • request.data

Django:RestFramework之-------解析器的更多相关文章

  1. Django rest-framework框架-解析器

    解析器: 开始: django: request.POST/ request.body 满足一下两个要求POST中才有值 1. 如果请求头中的 Content-Type: application/x- ...

  2. Django REST framework - 解析器和渲染器

    目录 Django REST framework - 解析器和渲染器 解析器 Django中的数据解析 DRF中的解析器 渲染器 Django REST framework - 解析器和渲染器 解析器 ...

  3. rest-framework框架——解析器、ur控制、分页、响应器、渲染器、版本

    一.解析器(parser) 解析器在reqest.data取值的时候才执行. 对请求的数据进行解析:是针对请求体进行解析的.表示服务器可以解析的数据格式的种类. from rest_framework ...

  4. rest-framework之解析器

    解析器 解析器的作用 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等 ...

  5. django rest framework 解析器组件 接口设计,视图组件 (1)

    一.解析器组件 -解析器组件是用来解析用户请求数据的(application/json), content-type 将客户端发来的json数据进行解析 -必须适应APIView -request.d ...

  6.  Django REST framework解析器和渲染器

    解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...

  7. 07 Django REST Framework 解析器与渲染器

    01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记 ...

  8. RestFramework之解析器

    一.什么是解析器? 对请求的数据进行解析 - 请求体进行解析. 解析器在你不拿请求体数据时 不会调用. 安装与使用: https://www.django-rest-framework.org/ 官方 ...

  9. Django:RestFramework之-------序列化器

    8.序列化 功能: 对请求数据进行验证 对Queryset进行序列化 8.1一个简单序列化: import json from api import models from rest_framewor ...

随机推荐

  1. 11.面试思路&画图让抽象具体化(2)

    面试思路 题一:[二叉树的镜像] 操作给定的二叉树,将其变换为源二叉树的镜像. 分析:使用递归=>边界条件:节点为空,交换当前节点的左右节点. /** public class TreeNode ...

  2. 把antd的组件源码搬到Ant Design Pro中使用

    把组件源码搬过来后,样式死活不生效,经过1天的努力,有说less-loader的,有说webpack配置,还有说babel配置的,最后,我自己找到了方法 就是在global.less中使用@impor ...

  3. postMessage的使用

    一.简介 1.postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档.多窗口.跨域消息传递 2.postMessage(data,origin)方法接受两个参数 ...

  4. 使用PostMan进行压力/性能测试

    1. 2. 3. 4.查看结果/导出结果

  5. springcloud的Hystrix turbine断路器聚合监控实现(基于springboot2.02版本)

    本文基于方志朋先生的博客实现:https://blog.csdn.net/forezp/article/details/70233227 一.准本工作 1.工具:Idea,JDK1.8,Maven3. ...

  6. Java 并发系列之一:java 并发体系

    1.  java 并发机制的底层原理实现 1.1 volatile 1.2 synchronized 1.3 原子操作 2. java 内存模型(JMM) 3. java并发基础线程 4. java ...

  7. CDN惹的祸:记一次使用OSS设置跨域资源共享(CORS)不生效的问题

    原文: https://www.lastupdate.net/4669.html 昨天H5组的开发反馈了一个问题,说浏览器收不到跨域的配置,提示:Failed to load https://nnmj ...

  8. java web开发入门二(struts)基于eclispe

    JavaBean JavaBean,  咖啡豆. JavaBean是一种开发规范,可以说是一种技术. JavaBean就是一个普通的java类.只有符合以下规定才能称之为javabean: 1)必须提 ...

  9. 【技术博客】Laravel5.1文件上传单元测试

    Laravel5.1文件上传单元测试 作者:ZGJ 在软工第三阶段中,我彻底解决了上一阶段一直困扰我的文件上传单元测试问题,在这里做一个总结. 注:下文介绍中,方法一方法二实现简单但有一定的限制条件( ...

  10. spark listener

    最近在做一个需求,当spark程序在读数据或写数据时,将所读的条数或或所写的条数实时的展现出来,这里用到了SparkListener,sparklisten 可以获取spark 各个运行阶段的状态. ...