如何列出jinja模板中的可用参数

问题描述 投票:1回答:1

我有一个模板,比如一个变量NAME

my_template = "Hello {{ NAME }}"

最终代码将render模板,例如:

from jinja2 import Template
template = Template(my_template)
// what code would return 'NAME' here?
rendered = template.render(NAME="frank")

我需要获取模板的变量列表/“available args”。在这种情况下,这将返回NAME(可能在某种集合中)。

(我的详细用例是我接受模板,可以选择包含一些众所周知的模板变量名称,我需要将其拉出,然后在调用render()时添加到上下文中)

python python-3.x jinja2 templating
1个回答
1
投票

我被阻止了,所以最终找到了答案。这需要jinja2.meta

from jinja2 import Template, Environment, meta
env = Environment()
ast = env.parse(code_string)
for var in meta.find_undeclared_variables(ast):
    print(var)   # <-----
template = Template(code_string)
template.render( # ... args
© www.soinside.com 2019 - 2024. All rights reserved.