drf中的请求与响应
请求与响应(3星)
请求:Request
REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。
REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进行parse解析,解析为类字典[QueryDict]对象保存到Request对象中。
Request对象的数据是自动根据前端发送数据的格式进行解析之后的结果。
无论前端发送的哪种格式的数据,我们都可以以统一的方式读取数据。
request.data: POST, PUT请求的数据
request.query_params: GET请求的数据
请求格式
1 请求支持三种编码格式,urlencoded,json,formdata
2 如果不配置,默认支持三种
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser', # 解析application/json格式
'rest_framework.parsers.FormParser', # 解析application/x-www-form-urlencoded
'rest_framework.parsers.MultiPartParser' # multipart/form-data
]
3 全局配置,在项目的配置文件中配置
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser', # 解析application/json格式
'rest_framework.parsers.FormParser', # 解析application/x-www-form-urlencoded
'rest_framework.parsers.MultiPartParser' # multipart/form-data
]
}
4 局部配置
from rest_framework.parsers import JSONParser
class BookView(ViewSetMixin,ListAPIView,CreateAPIView):
# 局部使用,只针对当前视图类有效,只想处理json格式
parser_classes = [JSONParser,]
5 使用顺序:我们没有配置,也有默认配置:3个都能解析
drf有默认配置(最后)----》项目配置文件的配置(其次)----》视图类中配的(优先用)
drf的默认配置:from rest_framework import settings
# 总结:一般情况下,都使用默认即可,不用配置
响应:Response
from rest_framework.response import Response
继承关系: Response >>> SimpleTemplateResponse >>> HttpResponse
参数:
| 参数 | 作用 |
|---|---|
| data=None(掌握) | 传字典或列表,序列化成json格式字符串给前端 |
| status=None(掌握) | 状态码:http响应的状态码 |
| template_name=None(基本不用) | 模板名字,在浏览器访问,看到的好看的模板(自定制) |
| headers=None(掌握) | 响应头(传字典格式) |
| exception=False | 不用管 |
| content_type=None | 响应编码类型 |
需要掌握: data, status, headers
data就是传数据

status就是http响应的状态码

headers就是响应头

完整使用
比较完整的使用
response={'code':100,'msg':'查询成功','result':ser.data}
return Response(response,status=status.HTTP_201_CREATED,headers{'xxx':"xxx"})
响应格式
通过配置, 设置响应格式(浏览器模板的样子或者 纯json)
注意事项:
1.drf有个默认配置文件(from rest_framework import settings),如果项目在django的settings中配置了,优先使用项目的,如果没配置, 使用内置的
2.后期, drf所有的配置, 都写在下面的字典中
3.返回样式我们一般不配置
全局配置:
REST_FRAMEWORK={
#配置响应格式,默认有俩(json,浏览器的)
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer', # 纯json
'rest_framework.renderers.BrowsableAPIRenderer', # 浏览器
]
}
局部配置(只针对某一视图函数):
# 导入你想设置的返回格式
from rest_framework.renderers import BrowsableAPIRenderer, JSONRenderer
class BookAPIView(APIView):
renderer_classes = [BrowsableAPIRenderer] # 这样在该视图类就只返回浏览器格式
renderer_classes = [JSONRenderer] # 这样在该视图类就只返回纯json格式
renderer_classes = [JSONRenderer, BrowsableAPIRenderer] # 这样在该视图类就返回两种格式
# 查询所有的接口
def get(self, request, *args, **kwargs):
pass
优先级
局部 > 项目中 > drf默认
drf中的请求与响应的更多相关文章
- python的Web框架,Django框架中的请求与响应
请求与响应 简单流程图 我们先来了解一个请求与响应的大概流程 视图函数接受到的request到底是个什么对象呢? 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的 ...
- drf中的请求模块和渲染模块
请求模块:request对象 APIView request.py # 在rest_framework.request.Request实例化方法中 self._request = request 将原 ...
- 3-Fiddler修改请求或响应内容
1.修改请求内容 方法一:设置请求前断点,修改请求后发送 1)设置断点 2)选中请求,在inspectors下修改请求内容 3)修改请求后,点击Break on Response按钮,进行请求的发送 ...
- spring基础---->请求与响应的参数(一)
这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...
- tornado请求与响应
tornado中处理请求与响应的类如下, 所有视图类必须继承该类: tornado.web.RequestHandler 一. 响应之self.write()方法 1. 该方法可返回值的类型: 当返 ...
- DRF视图-请求与响应
DRF视图 drf的代码简写除了在数据序列化体现以外,在视图中也是可以的.它在django原有的django.views.View类基础上,drf内部封装了许多子类以便我们使用. Django RES ...
- drf请求、响应与视图
目录 一.请求 1 定义 2 常用属性 1).data 2).query_params 二.响应 1 Response 2 构造方法 3 状态码 1)信息告知 - 1xx 2)成功 - 2xx 3)重 ...
- DRF对Django请求响应做了技术升级
Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优 ...
- Spring Boot中如何扩展XML请求和响应的支持
在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...
随机推荐
- LGP4841题解
无向联通图计数板子 首先,这个太难了,先让我们来求一个简单的: 无向图计数. 一共 \(\frac {n \times (n+1)} 2\) 条可能存在的边,枚举一条边是否存在,就有 \(2^{\fr ...
- vue3-码一下组件的v-model
RT,码一下组件的v-model,知识点太多,没听懂...,后面学完回来再仔细看看
- IBM QRadar Advisor 安全限制绕过漏洞
受影响系统:IBM QRadar Advisor 1.0.0 -2.4.0描述:CVE(CAN) ID: CVE-2019-4556 IBM QRadar Advisor是一套安全威胁分析解决方案. ...
- VMware安装win7后,安装VMware Tools时报错安装程序无法继续。本程序需要您将此虚拟机上安装的操作系统更新到SP1
具体报错: 倘若你用的是这样的镜像:cn_windows_7_enterprise_x64_dvd_x15-70741.iso 换镜像源.换镜像源.换镜像源! 换成带sp1的iso镜像:cn_wind ...
- springboot自定义启动图画
小小娱乐,你是不是看到好多文章或段子上有这个 是不是很好玩,其实修改也很简单,就是在springboot的resources下新建一个banner.txt文件,将要输出图案放到txt文件中就好,启动时 ...
- ubuntu16.04启动ssh服务
1 查看ssh服务是否开启 ps -e | grep ssh* 2如果没有则安装ssh apt-get install openssh-server openssh-client 3再看服务就有ssh ...
- 保姆教程系列二、Nacos实现注册中心
前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到 保姆教程系列一.Linux搭建Nacos 注册中心原理 一.环境准备 Java版本:1.8+ (Linux ce ...
- Springmvc入门基础(二) ---架构详解
1.框架结构图 架构流程文字说明 用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器. 处理器映射器根据 ...
- Linux常用命令-学习笔记
Linux命令格式: 命令 [命令参数] [命令对象] # 命令之间的参数和对象用单个空格进行分割 # "[]"代表可选,{}代表必选其中的一项,|代表或者的关系,<> ...
- ACL 权限控制机制?
UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...