이 콘텐츠는 변경됩니다.
## 시작하며 {#sec-8f30851140f6} 웹 개발 환경은 점점 더 복잡해지고 있습니다. React나 Vue.js 같은 프런트엔드 프레임워크는 강력하지만, 모든 프로젝트에 꼭 필요한 것은 아닙니다. 특히 간단한 동적 기능을 구현하고 싶을 때, 이러한 프레임워크는 과도한 복잡성을 초래할 수 있습니다. **[[HTMX]]**는 이러한 문제를 해결하기 위해 등장한 **가벼운 HTML 중심의 라이브러리**로, Django와 같은 서버 사이드 프레임워크와 잘 통합되어 동적 웹 애플리케이션을 간단하게 구축할 수 있습니다.  ## [[HTMX]]란 무엇인가? {#sec-a0108dfea168} HTMX는 동적 웹 개발을 단순화하기 위해 만들어진 경량 JavaScript 라이브러리입니다. 복잡한 JavaScript 코드나 프런트엔드 프레임워크 없이도 **AJAX**, **WebSocket**, **Server-Sent Events (SSE)** 같은 동적 기능을 HTML 속성만으로 구현할 수 있습니다. ## HTMX의 주요 HTML 속성 {#sec-4ea8e105a73c} * **hx-get**: 서버로 `GET` 요청을 보냅니다. * **hx-post**: 서버로 `POST` 요청을 보냅니다. * **hx-swap**: 서버로부터 받은 응답을 페이지의 특정 부분에 삽입합니다. * **hx-trigger**: 클릭이나 마우스 이동 등 특정 이벤트에 따라 동작을 실행합니다. * **hx-target**: 서버에서 받은 내용을 렌더링할 특정 HTML 요소를 지정합니다. 이러한 속성 덕분에 HTMX는 Django와 같은 **서버 중심의 렌더링 방식**과 자연스럽게 결합됩니다. ## Django Template과 [[HTMX]]의 차이점 {#sec-b553d9a1aa9d} ### 1. Django Template {#sec-c44ee559797a} * Django Template은 서버에서 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. 사용자가 버튼을 클릭하면 `/update/` URL로 `GET` 요청이 발생합니다. 2. 서버는 `partials/content.html` 템플릿을 반환하고, `