Генерация HTML страницы по шаблону с помощью Python

Была написана HTML страница с разными стилями и JavaScript кодом. На странице присутствуют некоторые поля (по сути, обычный текст), значение которых нужно менять в Python в зависимости от ситуации перед сохранением страницы на диск.

На данный момент найдены такие варианты реализации этого механизма: присвоить дескрипторам уникальные идентификаторы (id), после с помощью HTML библиотеки редактировать значения, или вместо осмысленного текста указать в поле %UniqueValue% и использовать банальную строковую замену.

Подскажите, пожалуйста, существует ли какое-нибудь более быстрое, эффективное и элегантное решение?


Ответы (1 шт):

Автор решения: gil9red

Используйте модуль jinja2:

pip install jinja2

Пример:

from dataclasses import dataclass

# pip install jinja2
import jinja2


@dataclass
class User:
    username: str
    url: str


template = jinja2.Template("""\
<title>{{ title }}</title>
<ul>
{% for user in users %}
  <li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
""")

users = [
    User('1', 'https://a.bc/user/1'),
    User('2', 'https://a.bc/user/2'),
    User('3', 'https://a.bc/user/3'),
]

html = template.render(title="Hello World!", users=users)
print(html)

Результат:

<title>Hello World!</title>
<ul>

  <li><a href="https://a.bc/user/1">1</a></li>

  <li><a href="https://a.bc/user/2">2</a></li>

  <li><a href="https://a.bc/user/3">3</a></li>

</ul>
→ Ссылка