如何阅读Jinja2模板并获取需要变量的列表来呈现它?

时间:2013-01-15 09:12:25

标签: python jinja2

我需要在模板的上下文中获取所需的变量列表,以便能够向将使用my service的程序员提供一些反馈。

我该怎么做?

我正在考虑提供一个上下文对象,当模板尝试访问它时会创建变量,然后在渲染后给我上下文对象中的变量列表。

这可能吗?

2 个答案:

答案 0 :(得分:6)

解析模板,您可以找到所有变量:http://jinja.pocoo.org/docs/api/#the-meta-api 示例包括。

答案 1 :(得分:5)

使用jinja2 meta api

from jinja2 import Environment, FileSystemLoader,meta

PATH = os.path.dirname(os.path.abspath(__file__)) #get the path of current 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] #replace template_filename with your template file relative to current file
parsed_content = TEMPLATE_ENVIRONMENT.parse(template_source)
variables= meta.find_undeclared_variables(parsed_content)
print variables

输出:使用过的变量集

set(['CONFIG_PARAM_HTTPS_PROXY_PORT', 'CONFIG_PARAM_HTTP_PROXY_PORT'])