我正在尝试使用jinja2为自己构建配置生成器。在尝试渲染模板以提供在模板渲染之前填充的示例文件之前,我需要知道预期的变量及其键是什么。所需参数将根据所选配置类型和使用的模板进行更改。我不想存储所有必需的参数,因为模板会不时更改,并且还会添加新模板。每个模板将有50个参数
这是一个示例模板文件
{{data.config1[0].field1}}
{{data.config2[0].field3}}
firt level change test
{% for row in data.config1 %}
{% if row.field3=='1' %}
something {{row.field1}} {{row.field2}}
{% else %}
something {{row.field1}}
{% endif %}
{% endfor %}
footer thingy
{{data.config2[0].field5}}
我尝试使用jinja2.meta包中的find_undeclared_variables 这是我的示例代码
import os
from jinja2 import Environment, FileSystemLoader,meta
template_filename = 'change.txt'
PATH = os.path.dirname(os.path.abspath(__file__))
TEMPLATE_ENVIRONMENT = Environment(
autoescape=False,
loader=FileSystemLoader(os.path.join(PATH)),
trim_blocks=False)
template_source =TEMPLATE_ENVIRONMENT.loader.get_source(TEMPLATE_ENVIRONMENT, template_filename)[0]
parsed_content = TEMPLATE_ENVIRONMENT.parse(template_source)
variables= meta.find_undeclared_variables(parsed_content)
print (variables)
这就是我能得到的
{'data'}
我想要的输出是这样的。
{'config1':['field1','field2','field3'], 'config2':['field3','field5']}
请建议。