ViewsViewsets 上的 Mixins 和用法介紹列表

可用混合列表:

  • ListModelMixin: 為 view / viewset 提供 .list() 方法
  • RetrieveModelMixin: 為檢視/檢視集提供 .retrieve() 方法
  • CreateModelMixin: 為 view / viewset 提供 .create() 方法
  • UpdateModelMixin: 為檢視/檢視集提供 .update() 方法
  • DestroyModelMixin: 為檢視/檢視集提供 .destroy() 方法

我們可以在通用檢視和檢視集中混合和匹配 mixin,以便為它們提供我們需要的相應實用程式:

  1. 使用 .list() .create().destroy() 方法的 API 檢視?
    繼承 GenericAPIView 並結合適當的 mixins:

    from rest_framework import mixins, generics
    
    from myapp.models import MyModel
    from myapp.serializers import MyModelSerializer
    
    class MyCustomAPIView(mixins.ListModelMixin, 
                          mixins.CreateModelMixin,
                          mixins.DestroyModelMixin,
                          generics.GenericAPIView):
    
        queryset = MyModel.objects.all()
        serializer_class = MyModelSerializer
    
        def get(self, request, *args, **kwargs):
            return self.list(request, *args, **kwargs)
    
        def post(self, request, *args, **kwargs):
            return self.create(request, *args, **kwargs)
    
        def delete(self, request, *args, **kwargs):
            return self.destroy(request, *args, **kwargs)
    
  2. 只有 .list().update() 方法的檢視集?
    繼承 GenericViewSet 並新增適當的 mixins:

    from rest_framework import mixins
    
    class MyCustomViewSet(mixins.ListModelMixin,
                          mixins.UpdateModelMixin,
                          viewsets.GenericViewSet):
        pass
    

    是的,就這麼簡單!

總之,我們可以混合和匹配我們需要的每個 mixin,並利用它來定製我們的檢視和他們的方法任何可能的組合!