Ответ
Jinja — это быстрый, экспрессивный и расширяемый шаблонизатор для Python, вдохновленный Django-шаблонами. Он широко используется в веб-фреймворках, таких как Flask, для генерации динамического HTML, XML или других текстовых форматов.
**Основные возможности Jinja:**
* **Наследование шаблонов:** Позволяет создавать базовые шаблоны (`base.html`) и расширять их в дочерних шаблонах (`{% extends 'base.html' %}`), переопределяя блоки (`{% block content %}`). Это способствует повторному использованию кода и единообразию.
* **Управляющие структуры:** Поддерживает условные операторы (`{% if ... %}`), циклы (`{% for item in items %}`) и другие конструкции для динамического отображения контента.
* **Переменные:** Вывод значений переменных с помощью двойных фигурных скобок (`{{ variable }}`).
* **Фильтры:** Модификация переменных перед выводом (например, `{{ name|upper }}` для перевода в верхний регистр).
* **Макросы:** Создание переиспользуемых фрагментов кода, аналогичных функциям (`{% macro input(name, value='') %}`).
* **Включение шаблонов:** Вставка содержимого одного шаблона в другой (`{% include 'header.html' %}`).
**Пример использования Jinja в Python:**
```python
from jinja2 import Environment, FileSystemLoader
# Настройка окружения Jinja для загрузки шаблонов из папки 'templates'
env = Environment(loader=FileSystemLoader('templates'))
# Предположим, у нас есть файл 'templates/index.html':
#
Привет, {{ user.name }}!
# {% if items %} #-
# {% for item in items %}
#
- {{ item|capitalize }} # {% endfor %} #
Нет элементов.
# {% endif %} # Загрузка шаблона template = env.get_template('index.html') # Данные для рендеринга data = { "user": {"name": "Алиса"}, "items": ["яблоко", "банан", "апельсин"] } # Рендеринг шаблона output = template.render(data) print(output) # Вывод: #Привет, Алиса!
#-
#
- Яблоко #
- Банан #
- Апельсин #