我有一个模板,比如一个变量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()
时添加到上下文中)
我被阻止了,所以最终找到了答案。这需要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