- это язык шаблонов, который используется в Python. Jinja - это не единственный язык шаблонов (шаблонизатор) для Python и, конечно же, не единственный язык шаблонов в целом.
Jinja2 используется для генерации документов на основе одного или нескольких шаблонов.
Примеры использования:
Установить Jinja2 можно с помощью pip:
pip install jinja2
Далее термины Jinja и Jinja2 используются взаимозаменяемо.
Идея Jinja очень проста: разделение данных и шаблона. Это позволяет использовать один и тот же шаблон, но подставлять в него разные данные.
В самом простом случае шаблон - это просто текстовый файл, в котором указаны места подстановки значений с помощью переменных Jinja.
Пример шаблона Jinja:
hostname {{name}} ! interface Loopback255 description Management loopback ip address 10.255.{{id}}.1 255.255.255.255 ! interface GigabitEthernet0/0 description LAN to {{name}} sw1 {{int}} ip address {{ip}} 255.255.255.0 ! router ospf 10 router-id 10.255.{{id}}.1 auto-cost reference-bandwidth 10000 network 10.0.0.0 0.255.255.255 area 0
Комментарии к шаблону:
Этот шаблон может использоваться для генерации конфигурации разных устройств с помощью подстановки других наборов переменных.
Пример скрипта с генерацией файла на основе шаблона Jinja (файл basic_generator.py):
from jinja2 import Template template = Template(''' hostname {{name}} ! interface Loopback255 description Management loopback ip address 10.255.{{id}}.1 255.255.255.255 ! interface GigabitEthernet0/0 description LAN to {{name}} sw1 {{int}} ip address {{ip}} 255.255.255.0 ! router ospf 10 router-id 10.255.{{id}}.1 auto-cost reference-bandwidth 10000 network 10.0.0.0 0.255.255.255 area 0 ''') liverpool = {'id':'11', 'name':'Liverpool', 'int':'Gi1/0/17', 'ip':'10.1.1.10'} print(template.render(liverpool))
Комментарии к файлу basic_generator.py:
Если запустить скрипт basic_generator.py, то вывод будет таким:
$ python basic_generator.py hostname Liverpool ! interface Loopback255 description Management loopback ip address 10.255.11.1 255.255.255.255 ! interface GigabitEthernet0/0 description LAN to Liverpool sw1 Gi1/0/17 ip address 10.1.1.10 255.255.255.0 ! router ospf 10 router-id 10.255.11.1 auto-cost reference-bandwidth 10000 network 10.0.0.0 0.255.255.255 area 0