как перечислить доступные аргументы в шаблоне jinja - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть шаблон, скажем, с одной переменной 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")

Мне нужно получить список переменных / "доступные аргументы" для шаблона. В этом случае это вернет NAME (вероятно, в какой-то коллекции).

(Мой подробный пример использования: я принимаю шаблоны, которые могут, при желании, включать некоторые известные template-variable имена, которые мне нужно вытащить, а затем добавить в контекст как я звоню render())

1 Ответ

0 голосов
/ 11 сентября 2018

Я был заблокирован на этом, так что в конце концов нашел ответ.Это требует 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...