如何在Django REST Framework中返回自定义JSON

我试图用返回自定义json,get_queryset但总是得到404 error响应。

class TestViewSet(viewsets.ModelViewSet):

"""

API endpoint that allows groups to be viewed or edited.

"""

queryset = Test.objects.all()

serializer_class = TestSerializer

def get_queryset(self):

if self.request.method == "GET":

content = {'user_count': '2'}

return HttpResponse(json.dumps(content), content_type='application/json')

如果我删除所有内容,def我将获得标准json数据的正确响应。我做错了什么?

回答:

回答:

您也可以使用APIView,不需要模型

class MyOwnView(APIView):

def get(self, request):

return Response({'some': 'data'})

urlpatterns = [

url(r'^my-own-view/$', MyOwnView.as_view()),

]

回答:

您已将自定义JSON放入get_queryset中,这是错误的。如果您想使用ModelViewSet,仅此一项就足够了:

class TestViewSet(viewsets.ModelViewSet):

queryset = Test.objects.all()

serializer_class = TestSerializer

这种ModelViewSet带有默认实现.list().retrieve().create().update(),和.destroy()。哪些可供您根据需要覆盖(自定义)

回答:

例如,重写.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'})

以上是 如何在Django REST Framework中返回自定义JSON 的全部内容, 来源链接: utcz.com/qa/423588.html

回到顶部