ViewSets具有自动列出、检索、创建、更新、删除、…的方法
ViewSets
我想禁用其中的一些,我想出的解决方案可能不是一个好的解决方案,因为OPTIONS仍然声明那些是允许的。
OPTIONS
关于如何以正确的方式做到这一点的任何想法?
class SampleViewSet(viewsets.ModelViewSet): queryset = api_models.Sample.objects.all() serializer_class = api_serializers.SampleSerializer def list(self, request): return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED) def create(self, request): return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
的定义ModelViewSet是:
ModelViewSet
class ModelViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, mixins.ListModelMixin, GenericViewSet)
所以与其扩展ModelViewSet,为什么不直接使用你需要的东西呢?例如:
from rest_framework import viewsets, mixins class SampleViewSet(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet): ...
使用这种方法,路由器应该只为包含的方法生成路由。
参考 :
模型视图集