如何在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