starndort foto

Создание HTML5 с помощью html5tagger: быстро, чистый Python, без зависимостей


Если вы ищете более эффективный и оптимизированный способ создания HTML5, обратите внимание на html5tagger! Этот модуль предоставляет упрощённый синтаксис HTML5, поэтому вы можете создать шаблон всего документа, используя только Python. Попрощайтесь с громоздким и подверженным ошибкам процессом ручного написания HTML-тегов.
Python

С помощью html5tagger вы можете безопасно и быстро генерировать HTML5 без каких-либо зависимостей, что делает его идеальным решением для разработчиков, которые ценят скорость и простоту. А благодаря реализации на чистом Python вам не придётся беспокоиться о проблемах совместимости или добавлении дополнительных библиотек в ваш проект.


Готовы оптимизировать процесс рендеринга страниц? Начать работу можно очень быстро. Поверьте, попробовав html5tagger, вы больше никогда не вернётесь к Jinja2 или написанию HTML вручную!

pip install html5tagger

html5tagger предоставляет две отправные точки для создания HTML-кода: E в качестве пустого конструктора для создания фрагментов HTML или Document для создания полных HTML-документов с объявлением DOCTYPE. Оба варианта создают объект Builder на случай, если он вам понадобится для аннотаций типов.


#html5tagger
E.div("Powered by:").br.a(href="#")("html5tagger rendiring")
#результат в html
<div>Powered by:<br><a href="#">html5tagger rendiring</a></div>

Полный пример с шаблонными переменными и другими функциями.


from html5tagger import Document, E

# Создание document 
doc = Document(
    E.TitleText_,           # Первый аргумент предназначен для <title>, добавляющего переменную TitleText
    lang="en",              # Аргументы ключевого слова для атрибутов <html>


    #Просто перечислите необходимые вам ресурсы, не нужно запоминать теги ссылок/скриптов
    _urls=[ "style.css", "favicon.png", "manifest.json" ]
)

# Имена в верхнем регистре - это переменные шаблона. Вы можете изменить их позже.
doc.Head_
doc.h1.TitleText_("Demo")   # Переходит в <h1> и также обновляет <title>

# Это было трудной проблемой для большинства других подобных генераторов:
doc.p("A paragraph with ").a("a link", href="/files")(" and ").em("formatting")

# Используйте with для сложной вложенности (требуется не часто)
with doc.table(id="data"):
    doc.tr.th("First").th("Second").th("Third")
    doc.TableRows_

# Давайте добавим что-нибудь к переменным шаблона
doc.Head._script("console.log('</script> escaping is weird')")

table = doc.TableRows
for row in range(10):
    table.tr
    for col in range(3):
        table.td(row * col)

#Или удалите табличные данные, которые мы только что добавили
doc.TableRows = None

Вы можете использовать str(doc) для получения HTML-кода, а использование doc напрямую обычно даёт желаемый результат (например, при отправке HTML-ответов). Блокноты Jupyter отображают его как HTML. Для отладки используйте repr(doc) там, где видны переменные шаблона.

>>> doc
Document Builder
<!DOCTYPE html><html lang=en><meta charset="utf-8">
<title>TitleText:Demo</title>
<link href="style.css" rel=stylesheet>
<link href="favicon.png" rel=icon type="image/png">
<link href="manifest.json" rel=manifest>
Head:<script>console.log('<\/script> escaping is weird')</script>
<h1>TitleText:Demo</h1>
<p>A paragraph with <a href="/files">a link</a> and <em>formatting</em>
<table id=data>
  <tr><th>First<th>Second<th>Third
  TableRows
</table>

Фактический HTML-код выглядит примерно так же. В документ не добавляются пробелы, он состоит из одной строки, если только в содержимом нет новых строк. Вы можете заметить, что body и другие знакомые теги отсутствуют, а экранирование очень минимальное. Это HTML5: документ соответствует стандартам и содержит гораздо меньше лишнего.


Документация