ViewSets
有自动的方法来列出、检索、创建、更新、删除……
我想禁用其中的一些,而我想出的解决方案可能不是一个好的解决方案,因为 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
的定义是:
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):
...
使用这种方法,路由器应该只为包含的方法生成路由。
引用:
关于python - 禁用 ViewSet 中的方法,django-rest-framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23639113/