Iが解析テンプレートオブジェクト内のすべての名前のノードを見つけるために小さな回避策を書き込み終わった - 以下はmeta.find_undeclared_variables
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 _
と同様の結果が得られるのPython 2のコードは次に、上記のように使用することが可能ですこれは:
from jinja2 import Environment
env = Environment()
ast = env.parse(your_template_string)
print find_variables_in_document(ast.body)