如果您不需要ModelViewSet而只想在GET请求上使用自定义JSON
您也可以使用
APIView,不需要模型
class MyOwnView(APIView): def get(self, request): return Response({'some': 'data'})和
urlpatterns = [ url(r'^my-own-view/$', MyOwnView.as_view()),]
使用ModelViewSet
您已将自定义JSON放入get_queryset中,这是错误的。如果您想使用
ModelViewSet,仅此一项就足够了:
class TestViewSet(viewsets.ModelViewSet): queryset = Test.objects.all() serializer_class = TestSerializer
这种
ModelViewSet带有默认实现
.list(),
.retrieve(),
.create(),
.update(),和
.destroy()。哪些可供您根据需要覆盖(自定义)
从.retrieve()
和/或 .list()
中返回自定义JSONModelViewSet
例如,重写
.retrieve()以在检索单个对象时返回自定义视图。我们可以看一下默认实现,如下所示:
def retrieve(self, request, *args, **kwargs): instance = self.get_object() serializer = self.get_serializer(instance) return Response(serializer.data)
因此,以返回自定义JSON为例:
class TestViewSet(viewsets.ModelViewSet): queryset = Test.objects.all() serializer_class = TestSerializer def retrieve(self, request, *args, **kwargs): return Response({'something': 'my custom JSON'}) def list(self, request, *args, **kwargs): return Response({'something': 'my custom JSON'})


