Как получить список всех переменных в шаблонах jinja 2

Я пытаюсь получить список всех переменных и блоков в шаблоне. Я не хочу создавать свой собственный парсер для поиска переменных. Я пробовал использовать следующий фрагмент.

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('gummi', 'templates'))
template = env.get_template('chat.html')

template.blocks - это dict, где ключами являются блоки, как я могу получить все переменные внутри блоков?

27
задан Kracekumar 24 November 2011 в 17:05
поделиться

2 ответа

См. Документация Jinja2 Meta API для получения более подробной информации

.
3
ответ дан 14 October 2019 в 21:25
поделиться

У меня была такая же потребность, и я написал инструмент под названием jinja2schema . Он предоставляет эвристический алгоритм для вывода типов из шаблонов Jinja2, а также может использоваться для получения списка всех переменных шаблона, включая вложенные.

Вот короткий пример этого:

>>> import jinja2
>>> import jinja2schema
>>>
>>> template = '''
... {{ x }}
... {% for y in ys %}
...     {{ y.nested_field_1 }}
...     {{ y.nested_field_2 }}
... {% endfor %}
... '''
>>> variables = jinja2schema.infer(template)
>>>
>>> variables
{'x': <scalar>,
 'ys': [{'nested_field_1': <scalar>, 'nested_field_2': <scalar>}]}
>>>
>>> variables.keys()
['x', 'ys']
>>> variables['ys'].item.keys()
['nested_field_2', 'nested_field_1']
9
ответ дан 28 November 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: