【发布时间】:2014-01-21 02:59:24
【问题描述】:
我在 DRF 中有一个视图设置 -
views.py
class APIDetail(APIView):
def get(self, request, pk, format=None):
query = model.objects.get(id=pk)
....
我基本上想将该 pk 作为变量传递到下面的渲染器中 -
renderers.py
def render(self, data, accepted_media_type=None, renderer_context=None):
if data is None:
return ''
stream = StringIO()
xml = SimplerXMLGenerator(stream, self.charset)
xml.startDocument()
xml.startElement("job id='string1' name='string2'",{})
我认为这就像让我在views.py中的类变得像这样简单 -
class APIDetail(APIView):
def get(self, request, pk, format=None):
def jobid():
global pk
return pk
query = model.objects.get(id=pk)
....
然后以某种方式将该全局变量传递给 renderers.py 但我不知道该怎么做。我猜是这样的,但它不起作用。
def render(self, data, accepted_media_type=None, renderer_context=None):
if data is None:
return ''
stream = StringIO()
xml = SimplerXMLGenerator(stream, self.charset)
xml.startDocument()
xml.startElement("job id='string1' name='string2'",{}) [jobid]
我得到的只是全局名称“jobid”未定义。
【问题讨论】:
-
你能在你的渲染器中检查
data吗? -
渲染器可以很好地处理正在传递的数据,并且 pk 是有效的 jobid。我只想将它作为变量单独传递,以便在我正在呈现的自定义 xml 中的另一个位置调用。
-
这个问题很不清楚。全局变量几乎总是一个坏主意,尤其是在像 Django 项目这样的多用户环境中。但是你到底想做什么?为什么不能简单地将 ID 传递给渲染器?
标签: python django django-rest-framework