如何在神社模板中列出可用参数
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
我有一个模板,比如一个 变量 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