一、逻辑封装
path('author/', views.AuthorView.as_view()), path('author/<pk>/', views.AuthorDetailView.as_view()),
from rest_framework import mixins, generics """ 本质:封装逻辑 1.return 父类的方法 2.queryset serializer_class 两个参数必要(看源码) 3.mixins.ListModelMixin和mixins.CreateModelMixin 没有的方法到generics.GenericAPIView去找 4.url的参数要改成pk,根据get_obj() 源码 """ class AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): queryset = Author.objects.all() # print(queryset) serializer_class = AuthorModelSerializer def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) class AuthorDetailView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView): queryset = Author.objects.all() serializer_class = AuthorModelSerializer def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs)