2016-10-15 2 views
1

Jinja2 템플릿에서 변수 목록을 가져 오려고합니다.Jinja2 템플릿 (부모 및 자식)의 변수 목록 가져 오기

test1.j2 :

some-non-relevant-content 
{{var1}} 
{% include 'test2.j2' %} 

test2.j2 :

env = Environment(loader=FileSystemLoader(searchpath='./Templates')) 
src_t = env.loader.get_source(env, 'test1.j2')[0] 
parsed_t = env.parse(source=src_t) 
t_vars = meta.find_undeclared_variables(ast=parsed_t) 

문제는, 나는 단지에서 변수를 얻을 수 있습니다 :

another-text 
{{var2}} 

내가 쉽게 TEST1에서 변수를 얻을 수 있습니다 get_source를 가지는 친 템플릿 물론, 클래스 템플릿 개체를 구문 분석 메서드로도 공급할 수 없습니다.

전체 목록을 만드는 방법이 있습니까? { 'var1', 'var2'} 내 경우에. Jinja2 API를 사용하는 것이 이상적입니다. 최소 사용자 정의 코드.

답변

1

큰 고통없이 코딩하는 방법을 찾았습니다. meta.find_referenced_templates는 재귀 적으로 적용될 때 모든 하위 템플릿을로드하는 데 도움이됩니다. 끝나면 모든 템플릿의 변수를 단일 목록으로 가져 오는 것이 쉽습니다.