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

Python 如何在jinja模板中列出可用参数,python,python-3.x,jinja2,templating,Python,Python 3.x,Jinja2,Templating,我有一个模板,比如说有一个变量名称 my_template = "Hello {{ NAME }}" 最终,代码将呈现模板,例如: from jinja2 import Template template = Template(my_template) // what code would return 'NAME' here? rendered = template.render(NAME="frank") 我需要将变量列表/“可用参数”添加到模板中。在本例中,这将返回NAME(可能在某种

我有一个模板,比如说有一个变量
名称

my_template = "Hello {{ NAME }}"
最终,代码将
呈现模板,例如:

from jinja2 import Template
template = Template(my_template)
// what code would return 'NAME' here?
rendered = template.render(NAME="frank")
我需要将变量列表/“可用参数”添加到模板中。在本例中,这将返回
NAME
(可能在某种类型的集合中)


(我的详细用例是我接受模板,这些模板可能(可选)包括一些我需要提取的众所周知的模板变量名,然后在调用
render()
)时添加到上下文中)

我被阻止了,所以最终找到了答案。这需要
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
来自jinja2导入模板、环境、元数据的

env=Environment()
ast=env.parse(代码字符串)
对于meta.find_未声明的变量(ast)中的var:
print(var)#我认为这是一个复制品,尽管从那以后的8年里可能发生了一些变化。