在django休息框架上覆盖JSONSerializer [英] Override JSONSerializer on django rest framework
问题描述
我试图将此修复程序应用到我的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屋!