Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django rest框架上重写JSONSerializer_Python_Django_Django Rest Framework - Fatal编程技术网

Python 在django rest框架上重写JSONSerializer

Python 在django rest框架上重写JSONSerializer,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正试图在django rest框架上应用此修复程序 但我不确定如何在django rest框架上重写json序列化程序,任何帮助都会很好 最终的结果是在Json上有根节点名,因为现在它只是一个没有根名称的对象数组 不是这样的 [{“foo”:“bar”}] 我需要它像这样 {“元素”:[{“foo”:“bar”}]} 让它与Ember JS一起工作 谢谢我想你的答案在你的帖子里 您需要定义自定义JSON呈现程序 from rest_framework.renderers import JSO

我正试图在django rest框架上应用此修复程序

但我不确定如何在django rest框架上重写json序列化程序,任何帮助都会很好

最终的结果是在Json上有根节点名,因为现在它只是一个没有根名称的对象数组

不是这样的

[{“foo”:“bar”}]

我需要它像这样

{“元素”:[{“foo”:“bar”}]}

让它与Ember JS一起工作


谢谢

我想你的答案在你的帖子里

您需要定义自定义JSON呈现程序

from rest_framework.renderers import JSONRenderer

class EmberJSONRenderer(JSONRenderer):

    def render(self, data, accepted_media_type=None, renderer_context=None):
        data = {'element': data}
        return super(EmberJSONRenderer, self).render(data, accepted_media_type, renderer_context)
并将其用作“设置”中的渲染或为视图显式定义的渲染,如:

class MyView(APIView):
    renderer_classes = (EmberJSONRenderer, )
    # ...

你能简单地解释一下你需要做什么吗..嘿@mariodev我编辑了这个问题来更好地解释标题应该是“override JSONRenderer”而不是“override JSONSerializer”谢谢你的回答,我唯一的问题是我不确定在哪里添加自定义代码,以及如何正确导入它,我是否应该将其添加到任何文件中,然后将导入添加到视图中?@user1713940这取决于您的项目结构,您可以创建其他utils应用程序,然后在那里创建
renders.py
并从那里导入自定义渲染器。您是否有想法根据服务更改name元素?(例如,对于名为../foo/的服务,您的数据将是data={'foo':data},但对于名为../bar/的其他服务,您的数据将定义为data={'bar':data})