在django休息框架上覆盖JSONSerializer [英] Override JSONSerializer on django rest framework

查看:116
本文介绍了在django休息框架上覆盖JSONSerializer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将此修复程序应用到我的django休息框架
将根元素添加到json响应(django-rest-framework)

I'm trying to apply this fix on my django rest framework Adding root element to json response (django-rest-framework)

但我不知道如何覆盖json serializer在django休息框架上,任何帮助将是巨大的。

But I'm not sure how to override the json serializer on django rest framework, any help would be great.

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

The end result would be to have the root node name on the Json, because right now it's just an array of objects without the root name i.e.

不是这样


[{ foo:bar}]

[{"foo":"bar"}]

我需要它像这样


{element:[{foo:bar}]}

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

让它与Ember JS一起使用

to get it to work with Ember JS

谢谢

推荐答案

我想你在给你的帖子中有你的答案。

I think you have your answer there in the post you've given.

你需要定义自定义JSON渲染器

You need to define custom JSON renderer

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)

并将其用作默认渲染器在设置中或作为您的视图的显式定义渲染,如:

and use it as default renderer either in settings or as an explicitly defined render for you view, like:

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

这篇关于在django休息框架上覆盖JSONSerializer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆