如何在神社模板中列出可用参数

how to list available arguments in a jinja template

我有一个模板,比如一个 变量 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" 的列表获取到模板中。在这种情况下,这将 return NAME(可能在某种集合中)。

(我的详细用例是我接受模板,这些模板可以选择性地包含一些众所周知的 模板变量 名称,我需要将其提取出来,然后添加到我称之为 context 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