请求与响应(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默认

最新文章

  1. Tengine 安装配置全过程
  2. HTML的两三事
  3. activity跳转到新的activity后清除之前的activity
  4. Slave_SQL_Running: No mysql同步故障解决方法
  5. OpenJudge计算概论-单词替换
  6. RPC 实现
  7. IFS解惑
  8. win32程序调试OutputDebugString 类似printf格式化输出
  9. Activiti之流程通过、驳回、会签、转办、中止、挂起等核心操作封装(Activiti5.9)
  10. my sql无法删除数据库
  11. Linux工作中常用命令
  12. Java 大数、高精度模板
  13. jQuery中empty与html("")的区别对比
  14. 关于mybatis的@Param注解和参数
  15. python 小程序,输错三次密码锁定账户
  16. Win-Lin双系统重装Windows找回Linux启动
  17. ajax 406 Not Acceptable
  18. expr命令总结
  19. Python_常用的正则表达式处理函数
  20. lintcode 466. 链表节点计数

热门文章

  1. 朴素版Dijkstra
  2. 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
  3. java-Dos
  4. 【混合编程】C/C++调用Fortran的DLL
  5. Arch Linux 系统迁移
  6. Centos7下开启防火墙,允许通过的端口
  7. linux下查看文件编码及修改编码介绍
  8. _u32定义
  9. select 中的timeout
  10. Android Studio Gradle project sync failed