What is Views
drf提供了两个基类,五个视图扩展类,9个视图集
drf提供了一个Django中view的子类APIView ,主要变动大概为以下:
- 重新封装了
Request与Response实例。- 使用了独有的Request与Response对象,并且提供了专有的解析器
Parser可以根据HTTPContent-Type指明的请求数据进行解析。
- 使用了独有的Request与Response对象,并且提供了专有的解析器
- 增加了自有的鉴权/节流
- 在django中
dispatch()分发前,会对请求进行身份认证、权限检查、流量控制。
- 在django中
- 异常捕获
APIException。
APIView implement
python
| |
What is GenericAPIView
GenericAPIView 是继承与 APIView的子类,在 APIView 的基础上增加了对于视图的通用支持方法,用来简化用户代码的编写。主要增加了 QuerySet 与 Serializers
GenericAPIView implement
python
| |
How to Use
Reference
使用APIView与使用View类似,像往常一样,请求会根据不同的方法被dispatch到对应的处理逻辑方法,例如.get()or .post()
引入
python
| |
使用GenericAPIView 是 APIView 的子类,是实现了APIView 的常用行为的一个类。一般情况下会与引入
queryset:对象查询集,使用GenericAPIView必须设置该属性,或者重写get_queryset()方法serializer_class: 序列化器类,必须设置该属性或重写get_serializer_class()方法。lookup_field: 查库时使用的条件字段,一般为传入的值,默认为pkpagination_class:分页
python
| |
五个视图扩展
Mixin类:DRF提供的通用的增删改查行为,Mixin一般与generics.GenericAPI 混用,可以组成灵活的视图。
CreateModelMixin: 保存新对象实例- 创建成功返回201与序列化后的列表,失败则返回400与错误的详细信息
UpdateModelMixin:对现有对象实例进行更新- 与创建相同,成功返回200,失败返回400
DestroyModelMixin:删除对象实例- 成功删除返回204 错误将返回一个404
ListModelMixin:列出实例列表- 查询成功返回200,需要设置queryset,相应数据可以设置分页
RetrieveModelMixin: 只读操作单个对象
九个视图集
在路由确定用于请求的控制器之后,您的控制器负责理解请求并产生适当的输出。
— Ruby on Rails 文档Django REST 框架允许您将一组相关视图的逻辑组
视图集 ViewSet 是DRF基于view使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中,如.get()或.post()则不在提供了,换为.list()和.create()的具体逻辑动作。