Django:RestFramework之-------解析器
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之-------解析器的更多相关文章
- Django rest-framework框架-解析器
解析器: 开始: django: request.POST/ request.body 满足一下两个要求POST中才有值 1. 如果请求头中的 Content-Type: application/x- ...
- Django REST framework - 解析器和渲染器
目录 Django REST framework - 解析器和渲染器 解析器 Django中的数据解析 DRF中的解析器 渲染器 Django REST framework - 解析器和渲染器 解析器 ...
- rest-framework框架——解析器、ur控制、分页、响应器、渲染器、版本
一.解析器(parser) 解析器在reqest.data取值的时候才执行. 对请求的数据进行解析:是针对请求体进行解析的.表示服务器可以解析的数据格式的种类. from rest_framework ...
- rest-framework之解析器
解析器 解析器的作用 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等 ...
- django rest framework 解析器组件 接口设计,视图组件 (1)
一.解析器组件 -解析器组件是用来解析用户请求数据的(application/json), content-type 将客户端发来的json数据进行解析 -必须适应APIView -request.d ...
- Django REST framework解析器和渲染器
解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...
- 07 Django REST Framework 解析器与渲染器
01-解析器 REST 框架包括一些内置的Parser类,允许你接受各种媒体类型的请求.还支持定义自己的自定义解析器,这使你可以灵活地设计API接受的媒体类型. 注意: 开发客户端应用程序时应该始终记 ...
- RestFramework之解析器
一.什么是解析器? 对请求的数据进行解析 - 请求体进行解析. 解析器在你不拿请求体数据时 不会调用. 安装与使用: https://www.django-rest-framework.org/ 官方 ...
- Django:RestFramework之-------序列化器
8.序列化 功能: 对请求数据进行验证 对Queryset进行序列化 8.1一个简单序列化: import json from api import models from rest_framewor ...
随机推荐
- 关于python中lambda 函数使用小结
例子: 如果定义普通函数,一般都是这样写: def:ds(x): return 2*x+1 调用即: ds(5) 如果用lambda函数就是这么写,就是一句话: g =lambda x:2*x+1 调 ...
- IE a zoom:1
- 排序算法-插入排序(Java)
package com.rao.linkList; import java.util.Arrays; /** * @author Srao * @className InsertSort * @dat ...
- mysql Navicat通过代理链接数据库
1.做完host 账号 密码(数据库服务器)配置之后,选择ssh 2.配置代理服务器ip的登录的账号密码.(代理服务器必须可以连你的Navicat客户端和数据库服务器,不然怎么做代理.) 3.可以直接 ...
- contest1 CF1084 div2 oooxx oooxo ooooo
题意: div2D (x)(x) 给出一棵树, 找出一条路径, 使得每一时刻点权和\(\ge\)边权和, 并且点权和\(-\)边权和最大 div2E (x)(o) 给出两个长度为\(n(\le 5e5 ...
- Scopus数据库简介
ScienceDirect数据库1. Elsevier简介荷兰Elsevier 是全球最大的科学文献出版发行商,已有180多年的历史.其产品涵盖科学.技术和医学等各个领域,包括1800多种学术期刊(大 ...
- rpm续
一.安装源码包 安装源码包通常须要一下三步: (1) ./configure. 这步可以定制功能,加上相应 的选项即可,具体有什么选项可以通过命令./configure help来查看.这一步会 自动 ...
- spring boot 从开发到上线(三)—AOP 异常监控、上报
在做这个项目的期间,看到一篇很有启发性的文章<程序员你为什么这么累>.对于初级程序员来说,拿到需求,第一反应是用什么技术来尽快的完成任务,这本身并没有问题.但长此以往,不仅被需求的更改搞得 ...
- [转帖]OLAP引擎这么多,为什么苏宁选择用Druid?
OLAP引擎这么多,为什么苏宁选择用Druid? 原创 51CTO 2018-12-21 11:24:12 [51CTO.com原创稿件]随着公司业务增长迅速,数据量越来越大,数据的种类也越来越丰富, ...
- [转帖]美团在Redis上踩过的一些坑-2.bgrewriteaof问题
美团在Redis上踩过的一些坑-2.bgrewriteaof问题 博客分类: redis 运维 aofaof rewrite 转载请注明出处哈:http://carlosfu.iteye.com/b ...