如何从Jinja的扩展名中访问上下文变量? [英] How to access context variables from the Jinja's Extension?
本文介绍了如何从Jinja的扩展名中访问上下文变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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
#一些解析过程
return nodes.Output([self.call_method('render'),])。set_lineno(lineno)
def render(self):
#TODO:我需要到这里,例如,`a`对象
return''
所以我需要得到$ render
方法中的c $ c> a 变量。如何做?
解决方案
好的,我自己的答案。
将 jinja2.nodes.Name('a','load')
添加到 call_method
code> Extension 这样,它将从上下文加载。
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?'
I'm using django+jinja2 via coffin, and I can't understand how to access the context variables in the extension. For example, I have this:
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 ''
So I need to get a
variable in the render
method. How can I do it?
解决方案
Ok, my own answer.
Add a jinja2.nodes.Name('a', 'load')
into a call_method
of the Extension
like this, and it will be loaded from the context.
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?'
这篇关于如何从Jinja的扩展名中访问上下文变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文