## 前言 {#sec-8f30851140f6} 網頁開發環境正變得日益複雜。儘管 React 或 Vue.js 等前端框架功能強大,但並非所有專案都必需它們。尤其當您只想實現簡單的動態功能時,這些框架可能會帶來不必要的複雜性。 **[[HTMX]]** 正是為了解決此類問題而誕生的**輕量級、以 HTML 為中心的函式庫**。它能與 Django 等伺服器端框架完美整合,讓您輕鬆建構動態網頁應用程式。 ![HTMX 標誌](/media/whitedec/blog_img/6a4d609fb5e24c35a5c4c1e080ae1082.webp) ## 什麼是 [[HTMX]]? {#sec-a0108dfea168} HTMX 是一個為簡化動態網頁開發而設計的輕量級 JavaScript 函式庫。它允許您僅透過 HTML 屬性,即可實現 **AJAX**、**WebSocket** 和 **Server-Sent Events (SSE)** 等動態功能,而無需編寫複雜的 JavaScript 程式碼或依賴前端框架。 ## HTMX 的主要 HTML 屬性 {#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-9a6eada8ca7} ### 基本 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 HTMX Example

此內容將會變更。

``` #### partials/content.html ```html

新內容將在此處顯示。

``` ### 運作結果 {#sec-8475f6be53ff} 1. 使用者點擊按鈕後,會向 `/update/` URL 發送 `GET` 請求。 2. 伺服器回傳 `partials/content.html` 模板,然後 `
` 內的內容會在不重新載入頁面的情況下被替換。 ## 同時使用 Django 與 [[HTMX]] 的優點 {#sec-864143843ab3} 1. **簡化動態網頁開發**: 無需 JavaScript 即可輕鬆實現 AJAX 等動態功能。 2. **保持伺服器端邏輯**: 業務邏輯集中在伺服器端,有助於提高安全性與維護性。 3. **可替代前端框架**: 無需 React、Vue.js 等大型框架,也能有效提升使用者體驗。 ## 本篇結語 {#sec-84994179e785} HTMX 憑藉其與 Django 的高度相容性,使動態網頁開發變得既簡單又高效。它強大且簡潔,足以替代現有的前端框架,因此我們強烈建議您在專案中嘗試導入它。 在下一篇中,我們將深入探討 **[[HTMX]] 與 Ajax 的關係**,並透過 **Ajax 請求與 HTMX 的運作範例**來更全面地了解 HTMX。敬請期待! **延伸閱讀** : - [使用 Django 和 HTMX 簡化動態網頁開發 (第二部分)](/ko/whitedec/2025/1/27/django-htmx-dynamic-web-simplification-2/) - [使用 Django 和 HTMX 簡化動態網頁開發 (第三部分)](/ko/whitedec/2025/1/27/django-htmx-dynamic-web-simplification-3/) - [使用 Django 和 HTMX 簡化動態網頁開發 (第四部分): CSRF Token 整合](/ko/whitedec/2025/1/27/django-htmx-csrf-token-integration/) - [使用 Django 和 HTMX 簡化動態網頁開發 (第五部分): 進階功能](/ko/whitedec/2025/1/27/django-htmx-advanced-features/) - [使用 Django 和 HTMX 簡化動態網頁開發 (第六部分): HTML 回傳方式](/ko/whitedec/2025/1/27/django-htmx-html-response/) - [使用 Django 和 HTMX 簡化動態網頁開發 (第七部分): JSON 回傳方式](/ko/whitedec/2025/1/27/django-htmx-json-response/)