从Jinja2模板(父模板和子模板)获取变量列表

3

我正在尝试从Jinja2模板中获取变量列表。

test1.j2:

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

test2.j2:

another-text
{{var2}}

我可以轻松地从test1中获取变量:

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)

问题是,我只能使用get_source从父模板获取变量。显然,我也不能将类模板对象提供给解析方法。
有没有办法构建完整的列表?在我的情况下是 {'var1','var2'}。最好使用Jinja2 API。最少的自定义代码。
1个回答

3

找到了一种不需要太大痛苦就能编写的方法。 meta.find_referenced_templates可以在递归应用时帮助加载所有子模板。完成后,从所有模板获取变量并放入单个列表中非常容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接