python - 如何在 Django REST 框架中返回自定义 JSON

标签 python json django django-rest-framework

我正在尝试使用 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 数据的正确响应。我做错了什么?

最佳答案

如果您不需要 ModelViewSet 并且只想在 GET 请求上自定义 JSON

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

class MyOwnView(APIView):
    def get(self, request):
        return Response({'some': 'data'})

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

使用模型 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'})

关于python - 如何在 Django REST 框架中返回自定义 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019030/

相关文章:

python - Django : Maintaining option selected in HTML template

python - 通过 3D 数据数组获取 x、y、z、平均值

python - 创建直方图时考虑错误

javascript - 使 JQuery 调用适用于所有 JSON 字段

django - 加载到模板中的多个 View

Python 数学运算顺序

ios - iOS 上的 Http 请求。没有获得完整的字符串

python - 内联 ModelAdmin 的 Django 管理员验证

python - python-django 应用程序中的相对导入不起作用

json - 尝试减少 JSON 大小是否值得?