我正在尝试使用 get_queryset
返回自定义 json,但总是得到 404 错误
作为响应。
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()
返回自定义 JSON和/或 .list()
在 ModelViewSet
例如覆盖 .retrieve()
检索单个对象时返回自定义 View 。我们可以看看default implementation which looks like this :
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'})
https://stackoverflow.com/questions/35019030/
相关文章:
python - 如何在保留矩阵维度的同时序列化 numpy 数组?
python - 在 View 中强制应用程序/json MIME 类型(Flask)
java - 将 InputStream 转换为 JSONObject
json - 在 Play Framework JsObject 中解析 Json 数组
json - 我应该如何处理 JSON 中的 HATEOAS 链接和引用?
javascript - IE10/11 Ajax XHR 错误 - SCRIPT7002 : XM
c# - 如何从 jQuery ajax 调用将复杂对象传递给 ASP.NET WebApi GET