【发布时间】:2015-08-20 16:31:23
【问题描述】:
我关注this question,它帮助我了解如何覆盖我的 JSONRenderer,但我又怀疑如何为我覆盖的 JSONRenderer 提供一个 arg 以便我可以根据需要更改我的“元素”名称:
请看下面的sn-p:
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)
我的意图是为我想通过 arg 获取的变量更改这个“元素”,因此我尝试了这个:
在 renderers.py
中from rest_framework.renderers import JSONRenderer
class EmberJSONRenderer(JSONRenderer):
def __init__(self,myarg='teste'):
self.myarg = myarg
def render(self, data, accepted_media_type=None, renderer_context=None):
data = {self.myarg:data}
return super(EmberJSONRenderer, self).render(data, accepted_media_type, renderer_context)
在 views.py 中:
class myViewSet(viewsets.ModelViewSet):
myrender = EmberJSONRenderer(myarg='abc')
renderer_classes = (myrender, BrowsableAPIRenderer, )
queryset = mymodel.objects.filter(myfilter=2)
serializer_class = mySerializer
allowed_methods = ('GET','OPTIONS','HEAD')
这会引发以下类型错误:
'EmberJSONRenderer' 对象不可调用
您有什么建议可以将我的视图中的信息作为 arg 直接传递给渲染器吗?
【问题讨论】:
标签: python django django-rest-framework renderer