Шаблонизатор Jinja2 является одним из самых популярных инструментов для генерации HTML в Python. Он позволяет разделять логику приложения и представление, делая код более чистым и легко поддерживаемым.

В этой статье мы рассмотрим, как использовать Jinja2 в Python, начиная с установки и заканчивая основными функциями и примерами использования.

Установка Jinja2

Для начала необходимо установить Jinja2. Это можно сделать с помощью менеджера пакетов pip. Откройте командную строку и выполните следующую команду:

pip install Jinja2

Создание шаблона

Шаблоны в Jinja2 представляют собой текстовые файлы, в которых вы можете использовать специальные теги для вставки данных. Давайте создадим простой шаблон:

{% raw %}


    {{ title }}


    

{{ heading }}

{{ content }}

{% endraw %}

В этом шаблоне мы используем {{ variable }} для вставки переменных, переданных в шаблон.

Использование Jinja2 в Python

Теперь давайте посмотрим, как использовать наш шаблон в Python. Для этого мы создадим файл app.py:

from jinja2 import Environment, FileSystemLoader

# Создаем окружение Jinja2
env = Environment(loader=FileSystemLoader('templates'))

# Загружаем шаблон
template = env.get_template('example.html')

# Данные для шаблона
data = {
    'title': 'Мой первый шаблон',
    'heading': 'Привет, мир!',
    'content': 'Это мой первый шаблон с использованием Jinja2.'
}

# Генерация HTML
output = template.render(data)

# Сохранение результата в файл
with open('output.html', 'w', encoding='utf-8') as f:
    f.write(output)

В этом коде мы создаем окружение Jinja2, загружаем шаблон и передаем данные для заполнения. Затем мы генерируем HTML и сохраняем его в файл output.html.

Функции и фильтры Jinja2

Jinja2 поддерживает множество функций и фильтров, которые позволяют обрабатывать данные перед их выводом. Например, мы можем использовать фильтр upper для преобразования текста в верхний регистр:

{{ content | upper }}

Это преобразует содержимое переменной content в верхний регистр.

Условия и циклы

Шаблоны Jinja2 также поддерживают условия и циклы. Например, вы можете использовать конструкции if и for:

{% if items %}
    
    {% for item in items %}
  • {{ item }}
  • {% endfor %}
{% else %}

Список пуст.

{% endif %}

В этом примере мы проверяем, есть ли элементы в списке items, и, если они есть, выводим их в виде списка.

Заключение

Шаблонизатор Jinja2 предоставляет мощные инструменты для генерации HTML в Python. Он позволяет легко управлять представлением данных и поддерживать чистоту кода. Надеемся, что эта статья помогла вам понять основы работы с Jinja2 и вдохновила вас на создание собственных шаблонов!

Дополнительные ресурсы: