我通过 coffin 使用 django+jinja2,我不明白如何访问扩展中的上下文变量。例如,我有这个:
from coffin.shortcuts import render_to_response
def some_view(request):
return render_to_response('template.html', {'a': 1})
class RenderFooExtension(Extension):
tags = set(['render_foo'])
def parse(self, parser):
lineno = parser.stream.next().lineno
# Some parsing process
return nodes.Output([self.call_method('render'),]).set_lineno(lineno)
def render(self):
# TODO: I need to get here, for example, `a` object
return ''
所以我需要在render
方法中获取a
变量。我该怎么做?
最佳答案
好吧,我自己的答案。
将 jinja2.nodes.Name('a', 'load')
添加到 Extension
的 call_method
中,如下所示,然后它将从上下文加载。
class RenderFooExtension(Extension):
tags = set(['render_foo'])
def parse(self, parser):
lineno = parser.stream.next().lineno
args = [nodes.Name('a', 'load'),]
return nodes.Output([self.call_method('render', args),]).set_lineno(lineno)
def render(self, a):
print 'Gotcha!', a
return 'something useful?'
关于django - 如何从 Jinja 的扩展访问上下文变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12139029/