#python #django #jinja2
#python #django #jinja2
Вопрос:
Пытаюсь упростить код, вложив шаблоны, подобные этому:
base = Template('''
- alert:
cluster: {{cluster}}
role: {{role}}
slack: {{slack}}
''')
alert = Template('''
{% include base %}
description: Critical {{role}} system load
threshold: xxx-yyy-zzz
''')
print alert.render(cluster='cluster1', slack='alerts', role='database')
Вышеуказанное не работает, получая исключение:
File "/usr/local/lib/python2.7/site-packages/jinja2/environment.py", line 989, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/local/lib/python2.7/site-packages/jinja2/environment.py", line 754, in handle_exception
reraise(exc_type, exc_value, tb)
File "<template>", line 2, in top-level template code
TypeError: no loader for this environment specified
Пожалуйста, посоветуйте.
Комментарии:
1. Подсказка: Проблема заключается в
{% include base %}
2. Понял, вопрос, как заставить include работать..
Ответ №1:
Вы просто не передаете ссылку на base
при рендеринге alert
шаблона.
>>> print alert.render(cluster='cluster1', slack='alerts', role='database', base=base)
################ just pass this reference of `base` ^
- alert:
cluster: cluster1
role: database
slack: alerts
description: Critical database system load
threshold: xxx-yyy-zzz