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