ViewsViewsets 上的 Mixins 和用法介绍列表
可用混合列表:
- ListModelMixin: 为 view / viewset 提供
.list()
方法 - RetrieveModelMixin: 为视图/视图集提供
.retrieve()
方法 - CreateModelMixin: 为 view / viewset 提供
.create()
方法 - UpdateModelMixin: 为视图/视图集提供
.update()
方法 - DestroyModelMixin: 为视图/视图集提供
.destroy()
方法
我们可以在通用视图和视图集中混合和匹配 mixin,以便为它们提供我们需要的相应实用程序:
-
使用
.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)
-
只有
.list()
和.update()
方法的视图集?
继承GenericViewSet
并添加适当的 mixins:from rest_framework import mixins class MyCustomViewSet(mixins.ListModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet): pass
是的,就这么简单!
总之,我们可以混合和匹配我们需要的每个 mixin,并利用它来定制我们的视图和他们的方法任何可能的组合!