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. 怎么认Destsoon标签条件

    看准一个标签认条件 如: <!--{php $tags=tag("moduleid=18&table=club_group_18&condition=status=3 ...

  2. Vyos的基本配置

    修改用户密码 Enter configuration mode configure Set password set system login user [username] authenticati ...

  3. 【java异常】Unable to install breakpoint in

    这个是断点失效,把那个断点双击清理掉就完了. 具体原因,以后再写.

  4. 模拟赛 T1 费马小定理+质因数分解+exgcd

    求:$a^{bx \%p}\equiv 1(\mod p)$ 的一个可行的 $x$. 根据欧拉定理,我们知道 $a^{\phi(p)}\equiv 1(\mod p)$ 而在 $a^x\equiv 1 ...

  5. PATB1006换个格式输出整数

    参考代码: #include<cstdio> int main() { int n;//接收输入的数字 int a = 0, b = 0, c = 0;//分别记录百位十位个位上的数 sc ...

  6. Docker ubuntn 使用apt-get update报错

    在docker 容器中执行apt-get update有时候会报错,当然造成错误的原因有很多情况,具体情况具体分析, APT Hash sum mismatch错误的常见解决方法总结这篇博客写的不错, ...

  7. Flask项目之入门

    from flask import Flask #实例化Flask对象 app = Flask(__name__) #传入当前的文件名__name__ #将‘/’ 和函数index的对应关系添加到路由 ...

  8. Python【每日一问】27

    问: [基础题1]:将一个正整数分解质因数.例如:输入 90, 打印出 90=2*3*3*5 . [基础题2]:一个数如果恰好等于它的因子之和,这个数就称为“完数” .例如6=1+2+3.请找出 10 ...

  9. POJ-数据结构-优先队列模板

    优先队列模板 优先队列是用堆实现的,所以优先队列中的push().pop()操作的时间复杂度都是O(nlogn). 优先队列的初始化需要三个参数,元素类型.容器类型.比较算子. 需要熟悉的优先队列操作 ...

  10. 由一个问题引起的思考:WEB开发中,使用JSON-RPC好,还是RESTful API好?

    起因: 研究zabbix的API设计风格.查看zabbix官网API文档,可以看到使用的是json-rpc:2.0 随后搜索到知乎上的一个问题讨论:https://www.zhihu.com/ques ...