0
템플릿에 사용 된 변수를 찾으려면 jinja2.meta.find_undeclared_variables
을 사용하고 있습니다. 그러나 인식 할 수없는 필터가있는 경우 TemplateAssertionError
으로 실패합니다.meta.find_undeclared_variables를 수행 할 때 "TemplateAssertionError : no filter named"를 무시하십시오.
jinja2에게 이러한 오류를 무시하고 변수 목록을 돌려 줄 수있는 방법이 있습니까? 아래 그리고 위처럼 사용할 수 있습니다
def find_variables_in_document(body_list):
variables = set()
for body in body_list:
variables.update(set(find_variables(body)))
return sorted(variables)
def find_variables(obj):
if hasattr(obj, '__dict__'):
if type(obj) is jinja2.nodes.Name:
yield obj.name
else:
for attribute, value in vars(obj).iteritems():
if isinstance(value, jinja2.nodes.Node):
for _ in find_variables(value):
yield _
if type(value) == list:
for item in value:
for _ in find_variables(item):
yield _
을 meta.find_undeclared_variables 유사한 결과를 제공 파이썬 2 코드 -