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年里可能发生了一些变化。