五个拓展类
-
CreateModelMixin
:保存数据 -
UpdateModelMixin
:更新数据 -
DestoryModelMixin
:删除数据 -
RetrieveModelMixin
:获取单一数据 -
ListModelMixin
:获取多个数据
代码优化:
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.generics import GenericAPIView from rest_framework.mixins import CreateModelMixin, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin, ListModelMixin from .models import BookInfo, HeroInfo from book.serializers import BookSerializer, HeroSerializer class BooksView(GenericAPIView, CreateModelMixin, ListModelMixin): serializer_class = BookSerializer # 指定序列化器 queryset = BookInfo.objects.all() # 指定数据对象查询集 def get(self, request): """ 获取所有图书 :param request: :return: """ return self.list(request) def post(self, request): """ 保存图书 :param request: :return: """ return self.create(request) class BookView(GenericAPIView, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin): serializer_class = BookSerializer # 指定序列化器 queryset = BookInfo.objects.all() # 指定数据对象查询集 def get(self, request, pk): """ 获取单一图书 :param request: :param pk: 查询图书的id :return: """ return self.retrieve(request, pk) def put(self, request, pk): """ 更新单一图书 :param request: :param pk: :return: """ # 1. 获取前端数据 return self.update(request, pk) def delete(self, request, pk): """ 删除单一图书 :param request: :param pk: :return: """ return self.delete(request, pk)
调用过程
- 前端请求 --> 自己定义的类视图 --> 拓展类方法 --> GenericAPIView中的方法
drf_demo
几个可用子类视图
CreateAPIView
提供 post 方法
继承自: GenericAPIView、CreateModelMixinListAPIView
提供 get 方法
继承自:GenericAPIView、ListModelMixinRetireveAPIView
提供 get 方法
继承自: GenericAPIView、RetrieveModelMixinDestoryAPIView
提供 delete 方法
继承自:GenericAPIView、DestoryModelMixinUpdateAPIView
提供 put 和 patch 方法
继承自:GenericAPIView、UpdateModelMixinRetrieveUpdateAPIView
提供 get、put、patch方法
继承自: GenericAPIView、RetrieveModelMixin、UpdateModelMixinRetrieveUpdateDestoryAPIView
提供 get、put、patch、delete方法
继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin