请求与响应(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中的请求与响应的更多相关文章

  1. python的Web框架,Django框架中的请求与响应

    请求与响应 简单流程图 我们先来了解一个请求与响应的大概流程  视图函数接受到的request到底是个什么对象呢? 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的 ...

  2. drf中的请求模块和渲染模块

    请求模块:request对象 APIView request.py # 在rest_framework.request.Request实例化方法中 self._request = request 将原 ...

  3. 3-Fiddler修改请求或响应内容

    1.修改请求内容 方法一:设置请求前断点,修改请求后发送 1)设置断点 2)选中请求,在inspectors下修改请求内容 3)修改请求后,点击Break on Response按钮,进行请求的发送 ...

  4. spring基础---->请求与响应的参数(一)

    这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...

  5. tornado请求与响应

    tornado中处理请求与响应的类如下, 所有视图类必须继承该类: tornado.web.RequestHandler 一. 响应之self.write()方法 1.  该方法可返回值的类型: 当返 ...

  6. DRF视图-请求与响应

    DRF视图 drf的代码简写除了在数据序列化体现以外,在视图中也是可以的.它在django原有的django.views.View类基础上,drf内部封装了许多子类以便我们使用. Django RES ...

  7. drf请求、响应与视图

    目录 一.请求 1 定义 2 常用属性 1).data 2).query_params 二.响应 1 Response 2 构造方法 3 状态码 1)信息告知 - 1xx 2)成功 - 2xx 3)重 ...

  8. DRF对Django请求响应做了技术升级

    Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优 ...

  9. Spring Boot中如何扩展XML请求和响应的支持

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

随机推荐

  1. python的matplotlib.pyplot绘制甘特图

    博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...

  2. TypeError: put() missing 1 required positional argument: 'item'问题分析

    今天博主在练习带参数线程池的时候与到了如下问题: 翻译过来,就是缺少位置参数. 一.错误1 如果此时你的代码高亮是这样: 解决办法:在init魔法方法下的Queue没有加括号,即 self.q = Q ...

  3. Rsync未授权访问

    1.漏洞名称 Rsync 未授权访问漏洞 2.漏洞原理 rsync是Linux下一款数据备份工具,支持通过rsync协议.ssh协议进行远程文件传输. 其中rsync协议默认监听873端口,如果目标开 ...

  4. 如何理解Node.js和JavaScript的关系

    一.Javascript的引擎 浏览器一般有两个引擎,一个是Html引擎,一个是脚本引擎. JavaScript是一种脚本语言,最初用于浏览器的动态显示,方便操作页面数据和内容.但实际上,它也可以在浏 ...

  5. VUE常见问题

    VUE常见问题 对于MVVM的理解 MVVM 是 Model-View-ViewModel 的缩写 Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑 View 代表UI 组件, ...

  6. C++ 并发编程1

    一个简单的并发编程的举例 #include <iostream> #include <thread> using namespace std; void hello(){ co ...

  7. XStream类的对象将javaBean转成XML

    [省市联动] servlet端: //返回数据xml(XStream) XStream xStream = new XStream(); //把路径设置别名 xStream.alias("c ...

  8. kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?

    我们暂且不考虑写磁盘的具体过程,先大致看看下面的图,这代表了 Kafka 的核心架构原理. Kafka 分布式存储架构 那么现在问题来了,如果每天产生几十 TB 的数据,难道都写一台机器的磁盘上吗?这 ...

  9. redux和vuex以及dva?

    redux: 通过store存储,通过action唯一更改,reducer描述如何更改.dispatch一个action dva: 基于redux,结合redux-saga等中间件进行封装 vuex: ...

  10. Mybatis框架基础入门(七)--关联查询

    1.一对一查询 1.1 使用resultType接收查询结果 修改pojo类 public class OrderUser extends order { private String usernam ...