Генерация 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>