이 콘텐츠는 변경됩니다.
## Введение {#sec-8f30851140f6} Среда веб-разработки становится все более сложной. Фронтенд-фреймворки, такие как React или Vue.js, мощны, но не всегда необходимы для каждого проекта. В частности, при реализации простых динамических функций эти фреймворки могут привести к излишней сложности. **[[HTMX]]** — это **легкая HTML-ориентированная библиотека**, созданная для решения этих проблем. Она хорошо интегрируется с серверными фреймворками, такими как Django, позволяя легко создавать динамические веб-приложения.  ## Что такое [[HTMX]]? {#sec-a0108dfea168} HTMX — это легковесная библиотека JavaScript, разработанная для упрощения динамической веб-разработки. Она позволяет реализовать динамические функции, такие как **AJAX**, **WebSocket** и **Server-Sent Events (SSE)**, используя только HTML-атрибуты, без сложного кода JavaScript или фронтенд-фреймворков. ## Основные HTML-атрибуты HTMX {#sec-4ea8e105a73c} * **hx-get**: Отправляет `GET` запрос на сервер. * **hx-post**: Отправляет `POST` запрос на сервер. * **hx-swap**: Вставляет ответ, полученный от сервера, в определенную часть страницы. * **hx-trigger**: Запускает действие в ответ на определенные события, такие как клик или перемещение мыши. * **hx-target**: Указывает конкретный HTML-элемент, в который будет рендериться содержимое, полученное от сервера. Благодаря этим атрибутам HTMX естественным образом сочетается с **серверно-ориентированным подходом к рендерингу**, используемым в Django. ## Различия между шаблонами Django и [[HTMX]] {#sec-b553d9a1aa9d} ### 1. Шаблоны Django {#sec-c44ee559797a} * Шаблоны Django рендерят HTML на сервере, а затем возвращают всю страницу клиенту. * Это традиционный подход, при котором страница перезагружается. * Для добавления динамических функций требуется написание JavaScript-кода вручную. ### 2. Django + HTMX {#sec-c1e9f1e7e591} * С помощью HTMX можно **обновлять только определенные части страницы без ее полной перезагрузки**. * Представление Django возвращает только часть HTML, а HTMX вставляет ее в указанный элемент на стороне клиента. * Это обеспечивает динамический пользовательский опыт без сложного JavaScript-кода. ## Пример интеграции Django и HTMX {#sec-9a6eada58ca7} ### Базовый код представления Django {#sec-14c13b64e461} ```python from django.shortcuts import render def update_content(request): if request.htmx: return render(request, 'partials/content.html') # 부분 HTML 반환 return render(request, 'index.html') # 전체 페이지 반환 ``` ### Конфигурация шаблонов {#sec-677344a74297} #### index.html ```html
이 콘텐츠는 변경됩니다.
새로운 콘텐츠가 여기 표시됩니다.
``` ### Результат работы {#sec-8475f6be53ff} 1. Когда пользователь нажимает кнопку, отправляется `GET` запрос на URL `/update/`. 2. Сервер возвращает шаблон `partials/content.html`, и содержимое внутри `