我需要在模板的上下文中获取所需的变量列表,以便能够向将使用我的服务的程序员提供一些反馈.
我怎样才能做到这一点 ?
我正在考虑给出一个上下文对象,当模板尝试访问它时会创建变量,然后在渲染后给出上下文对象中的变量列表.
那可能吗?
使用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
Run Code Online (Sandbox Code Playgroud)
输出:已使用变量的集合
set(['CONFIG_PARAM_HTTPS_PROXY_PORT', 'CONFIG_PARAM_HTTP_PROXY_PORT'])
Run Code Online (Sandbox Code Playgroud)