从 Jinja2 模板中获取变量列表(父子)
Get list of variables from Jinja2 template (parent and child)
我正在尝试从 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 从父模板中获取变量。
显然,我也不能将 class 模板对象提供给解析方法。
有没有办法建立完整的列表? {'var1', 'var2'} 在我的例子中。
理想情况下使用 Jinja2 API。最小自定义代码。
找到了一种不费吹灰之力的编码方法。
meta.find_referenced_templates 有助于在递归应用时加载所有子模板。完成后,从单个列表中的所有模板中获取变量是微不足道的。
我正在尝试从 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 从父模板中获取变量。 显然,我也不能将 class 模板对象提供给解析方法。
有没有办法建立完整的列表? {'var1', 'var2'} 在我的例子中。 理想情况下使用 Jinja2 API。最小自定义代码。
找到了一种不费吹灰之力的编码方法。 meta.find_referenced_templates 有助于在递归应用时加载所有子模板。完成后,从单个列表中的所有模板中获取变量是微不足道的。