2012-08-27 1 views
2

관을 통해 django + jinja2를 사용하고 있는데 확장 프로그램의 컨텍스트 변수에 액세스하는 방법을 이해할 수 없습니다.Jinja 's Extension에서 컨텍스트 변수에 액세스하는 방법은 무엇입니까?

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 변수를 얻을 필요가 예를 들어,이 있습니다. 내가 어떻게 해?

답변

4

좋아, 내 대답.

이 같은 Extensioncall_methodjinja2.nodes.Name('a', 'load')를 추가, 그것은 문맥에서로드됩니다.

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

관련 문제