当通过前面两个视图基类写五个接口时我们会发现,在写每个接口时我们都要写如下
两行代码,那么我们改如何解决这个问题呢,那该用到这五个视图拓展类了:
CreateModelMixin # 新增
RetrieveModelMixin # 查询一条
DestroyModelMixin # 删除
ListModelMixin # 查询所有
UpdateModelMixin # 修改一条
CreateModelMixin
class BookView(GenericAPIView, CreateModelMixin):
queryset = Book.objects.all() # 查看所有数据
serializer_class = BookSerializer # 序列化类
def get(self, request):
return super().list(request)
ListModelMixin
class BookView(GenericAPIView, ListModelMixin):
queryset = Book.objects.all() # 查看所有数据
serializer_class = BookSerializer # 序列化类
def post(self, request):
return super().create(request)
RetrieveModelMixin
class BookDetailView(GenericAPIView, RetrieveModelMixin):
queryset = Book.objects.all()
serializer_class = BookSerializer
def get(self, request, *args, **kwargs):
return super().retrieve(request, *args, **kwargs)
DestroyModelMixin
class BookDetailView(GenericAPIView, DestroyModelMixin):
queryset = Book.objects.all()
serializer_class = BookSerializer
def delete(self, request, *args, **kwargs):
return super().destroy(request, *args, **kwargs)
UpdateModelMixin
class BookDetailView(GenericAPIView,UpdateModelMixin):
queryset = Book.objects.all()
serializer_class = BookSerializer
def put(self, request, *args, **kwargs):
return super().update(request, *args, **kwargs)
总结:
- 五个视图扩展类不是视图类,需要与GenericAPIView搭配使用
- 后期不是五个接口都写,所有有下面的组合
--------------------------------------------------------------------------------->