【1】两个视图基类
APIView
- APIView是 Django REST Framework 提供的一个基类,用于创建基于函数或基于类的视图。
- 使用 APIView 可以根据需求自定义请求处理逻辑,对于简单的接口逻辑,可以直接继承APIView类。
GenericAPIView
- GenericAPIView是APIView的一个子类,提供了一些常用的通用方法和属性,使开发者能够更方便地编写试图。
- 通常与Mixin类一起使用,通过继承GenericAPIView和混入相应的功能类可以快速建立功能完善试图。
【2】5个视图扩展类
视图扩展类用于与
GenericAPIView
或其子类配合使用,提供常用的 CRUD(创建、读取、更新和删除)操作。
ListAPIView
- 继承自GenericAPIView和ListMixin,实现获取多条记录的功能。
CreateAPIView
- 继承自GenericAPIView和CreateModelMixin,实现创建记录的功能。
DestroyAPIView
- 继承自GenericAPIView和DestroyModelMixin,实现删除记录的功能。
UpdateAPIView
- 继承自GenericAPIView和UpdateModelMixin,实现更新记录的功能。
RetrieveAPIView
- 继承自GenericAPIView和RetrieveModelMixin,实现获取记录单条的功能。
【3】9个视图子类
视图子类用于与
GenericAPIView
或其子类配合使用,提供特定的功能和集成多个操作。
CreateModelMixin
- 该混入类提供create()方法
- 用于根据传入的POST请求数据创建模型的新对象实例
ListModelMixin
- 该混入类提供list()方法
- 用于检索模型的对象列表,并将其序列化为相应数据
RetrieveModelMixin
- 该混入类提供retrieve()方法
- 根据提供的标识符或查找字段检索模型的单个对象实例
DestroyModelMixin
- 该混入类提供destroy()方法
- 根据提供的标识符或查找字段处理删除模型的单个对象实例
UpdateModelMixin
- 该混入类提供update()方法
- 根据提供的标识符或查找字段处理更新模型的单个对象实例
- 上面5个混入类并不是独立的视图,而是用于与其他基于类的视图结合使用
- 例如
APIView
、GenericAPIView
或ViewSet
。- 通过继承这些混入类和适当的视图,开发人员可以轻松地实现所需的功能,避免编写重复的代码。
ListCreateAPIView
- 继承自GenericAPIView、ListCreateModelMixin,实现获取多条记录和创建记录的功能。
RetrieveUpdateDestroyAPIView
- 继承自GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestroyModelMixin,实现获取单条记录、更新记录和删除记录的功能。
RetrieveDestoryAPIView
- 继承自GenericAPIView、RetrieveModelMixin、DestroyModelMixin,实现获取单条记录的删除记录的功能。
RetrieveUpdateAPIView
- 继承自GenericAPIView、RetrieveModelMixin、UpdateModelMixin,实现获取单条记录和更新记录的功能。
【4】视图集
- 视图集是一种组织和管理视图的方式,它包括了多个接口,并允许使用相同的 URL 前缀来映射这些接口。
-
ModelViewSet
- 继承自GenericViewSet和ModelMixin,提供常用的CRUD操作(创建、读取、更新和删除)
- 5个接口
-
ReadOnlyModelViewSet
- 继承自GenericViewSet和ListModelMixin,只提供读取操作(查询所有和查询单条)。
- 2个接口
- list和retrieve (查询所有和查询单条)
-
ViewSetMixin
- 是一个"魔法"混入类,不能单独使用,必须与视图类一起使用,用于改变路由的写法。
-
ViewSet
- 继承自ViewSetMixin和APIView
- 用于继承APIView并改变路由的写法
- 在视图类中的方法可以任意命名。
-
GenericViewSet
- 继承自ViewSetMixin和GenericAPIView
- 用于继承GenericAPIView并改变路由的写法
- 在视图类中的方法可以任意命名。