2012-08-27 35 views
2

我通過棺材使用django + jinja2,我無法理解如何訪問擴展中的上下文變量。例如,我有這樣的:如何從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 

     # 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 '' 

所以我需要得到a變量在render方法。我該怎麼做?

回答

4

好的,我自己的答案。

jinja2.nodes.Name('a', 'load')添加到Extensioncall_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?' 
+1

是縮進是否正確? – mdob

相關問題