Упрощение динамической веб-разработки с Django и HTMX (Часть 3): Интеграция с Django
Надежный бэкэнд с философией "батарейки в комплекте" — Django — и HTMX, который ловко использует свежеиспеченные фрагменты HTML от этого бэкэнда, образуют поистине фантастический дуэт.
В этом посте, продолжая серию "Упрощение динамической веб-разработки с Django и HTMX", мы рассмотрим два конкретных метода интеграции HTMX в реальный проект Django.

1. Прямое использование без сторонних пакетов
Это самый чистый и легкий способ. Без сложной установки, просто добавив одну строку скрипта в HTML-шаблон, вы можете сразу же использовать функции HTMX.
Метод установки
Официальная документация HTMX предлагает несколько методов установки, но самый быстрый способ — это использование CDN.
- Использование CDN (самый быстрый): Просто вставьте следующий код в тег
<head>вашегоbase.html.
<script src="https://cdn.jsdelivr.net/npm/htmx.org@2.0.10/dist/htmx.min.js" integrity="sha384-H5SrcfygHmAuTDZphMHqBJLc3FhssKjG7w/CeCpFReSfwBWDTKpkzPP8c+cLsK+V" crossorigin="anonymous"></script>
- Прямая загрузка: Если важна безопасность или работа в офлайн-среде, вы можете загрузить htmx.min.js, поместить его в папку
staticвашего проекта и указать путь. - npm: Если вы используете систему сборки, вы можете установить HTMX с помощью команды
npm install htmx.org.
Перейти к официальной документации по установке HTMX
2. Использование пакета django-htmx
В экосистеме Django существует специальная библиотека, которая помогает использовать HTMX "по-джанговски". Это django-htmx.
Установка и настройка
Следуйте инструкциям из официальной документации django-htmx:
-
Установка пакета
bash python -m pip install django-htmx -
Регистрация в INSTALLED_APPS
python INSTALLED_APPS = [ ..., "django_htmx", ..., ] -
Добавление промежуточного ПО (Middleware)
python MIDDLEWARE = [ ..., "django_htmx.middleware.HtmxMiddleware", ..., ]
Насколько удобен django-htmx?
HTMX сам по себе достаточно простой инструмент, так есть ли необходимость устанавливать дополнительный пакет django-htmx? Этот вопрос вполне закономерен, ведь основные функции можно реализовать и без него. Однако, если рассмотреть удобные функции, которые предоставляет этот пакет, становится понятно, почему многие разработчики выбирают его.
Согласно официальной документации django-htmx, его главная особенность заключается в расширении объекта request через промежуточное ПО (middleware). После регистрации middleware появляется атрибут request.htmx, через который можно легко получить доступ к таким деталям, как:
- Проверка информации о запросе:
boosted,current_url,current_url_abs_path,history_restore_request,prompt - Управление целью и триггером:
target,trigger,trigger_name,triggering_event
Кроме того, пакет поддерживает два специальных тега, которые упрощают работу с шаблонами:
{% htmx_script %}: Основной тег для вставки скрипта библиотеки HTMX.{% django_htmx_script %}: Вспомогательный тег, который добавляет только расширенный скрипт для отладки, если HTMX был подключен через CDN или статически.
Особенно впечатляет модуль django_htmx.http, который содержит 11 полезных методов. Среди них выделяется trigger_client_event(). Он позволяет легко формировать заголовок HX-Trigger на стороне сервера и отправлять его вместе с ответом, тем самым контролируя события клиента напрямую с сервера. Это мощный инструмент, который становится очень часто используемым, как только вы к нему привыкнете.
Конечно, все эти функции разработчик может реализовать самостоятельно, написав свое промежуточное ПО или вручную манипулируя заголовками. Поэтому, если вы, как и я, предпочитаете создавать все самостоятельно, этот пакет может не показаться вам обязательным.
В заключение, django-htmx — это не "обязательный", а скорее "пакет, который определенно делает разработку более комфортной". Объем официальной документации невелик, и его можно освоить за час-два, так что вы можете решить, стоит ли его внедрять, исходя из особенностей вашего проекта.
Завершение
Если вы планируете реализовать лишь несколько простых функций, таких как кнопка-переключатель или функция "лайк", то прямого использования (CDN) будет вполне достаточно. В конце концов, минимизация ненужных зависимостей может быть наиболее экономичной.
Однако, если масштаб проекта увеличивается, и вам часто приходится одновременно обрабатывать как полные, так и частичные страницы в одном представлении, то стоит рассмотреть django-htmx.
Какой подход вам больше по душе? На самом деле, django-htmx — не тяжелый пакет, он довольно легкий, поэтому, возможно, правильным решением будет просто установить его без лишних раздумий. Все зависит от настроения и характера разработчика. Я думаю, это определяется склонностью разработчика: "минимизировать зависимости" или "делать большинство вещей самостоятельно".
Но какой бы выбор вы ни сделали, с HTMX вы сможете насладиться возвращением к простоте HTML, отойдя от JavaScript.
Читать по теме :
- Упрощение динамической веб-разработки с Django и HTMX (Часть 1)
- Упрощение динамической веб-разработки с Django и HTMX - Ajax (Часть 2)
- Упрощение динамической веб-разработки с Django и HTMX (Часть 4)
- Упрощение динамической веб-разработки с Django и HTMX (Часть 5)
- Упрощение динамической веб-разработки с Django и HTMX (Часть 6): Метод возврата HTML
- Упрощение динамической веб-разработки с Django и HTMX (Часть 7): Метод возврата JSON