在Django Rest框架上覆盖JSONSerializer

发布于 2021-01-29 17:41:28

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

但是我不确定如何在django rest框架上覆盖json序列化程序,任何帮助都将是很大的。

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

不是这样的

[{“ foo”:“ bar”}]

我需要像这样

{“ element”:[{“ foo”:“ bar”}]}

使它与Ember JS一起使用

谢谢

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我想您已经在给出的​​帖子中找到了答案。

    您需要定义自定义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, )
        # ...
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看