在django rest框架上覆盖JSONSerializer

Shi*_*des 9 python django django-rest-framework

我正在尝试在我的django rest框架上应用此修复程序 将根元素添加到json响应(django-rest-framework)

但是我不知道如何在django rest框架上覆盖json序列化器,任何帮助都会很棒.

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

不是这样的

[{ "foo" 的: "酒吧"}]

我需要它像这样

{"element":[{"foo":"bar"}]}

让它与Ember JS合作

谢谢

mar*_*dev 14

我想你在给出的帖子里有你的答案.

您需要定义自定义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)
Run Code Online (Sandbox Code Playgroud)

并在设置中使用它作为默认渲染器,或者作为显式定义的渲染用于您查看,例如:

class MyView(APIView):
    renderer_classes = (EmberJSONRenderer, )
    # ...
Run Code Online (Sandbox Code Playgroud)