使用 Django 和 HTMX 簡化動態網頁開發 (第三部):Django 整合
擁有「內建豐富功能 (Batteries Included)」哲學的穩固後端 Django,與巧妙運用後端新鮮出爐的 HTML 片段的 HTMX,兩者可謂是天作之合。
本篇貼文延續前文,作為「使用 Django 和 HTMX 簡化動態網頁開發」系列文章的第三部,我們將探討在實際 Django 專案中整合 HTMX 的兩種具體方法。

1. 不使用第三方套件,直接整合
這是最純粹、最輕量的方法。無需複雜的安裝過程,只需在 HTML 模板中新增一行腳本,即可立即使用 HTMX 的功能。
安裝方法
HTMX 官方文件提供了多種安裝方法,但最快的方式無疑是利用 CDN。
- 利用 CDN (最快): 將以下程式碼放入
base.html的<head>標籤中即可。
<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: 如果您正在使用建置系統,可以透過
npm install htmx.org命令進行安裝。
2. 使用 django-htmx 套件
在 Django 生態系中,存在一個專門的函式庫 django-htmx,能幫助您以更「Django 風格」的方式使用 HTMX。
安裝與設定
依照 django-htmx 官方文件 的指示,執行以下步驟。
-
安裝套件
bash python -m pip install django-htmx -
註冊 INSTALLED_APPS
python INSTALLED_APPS = [ ..., "django_htmx", ..., ] -
新增中介軟體
python MIDDLEWARE = [ ..., "django_htmx.middleware.HtmxMiddleware", ..., ]
django-htmx 究竟有多方便?
HTMX 本身就是一個非常簡單的工具,因此,是否還有必要額外安裝 django-htmx 這個套件?這確實會令人產生疑問。事實上,即使沒有這個套件,也能實現核心功能。然而,當我們審視這個套件所提供的便利功能時,便能理解為何許多開發者會選擇它。
根據 django-htmx 的官方文件,此套件最大的特色是透過中介軟體擴展 request 物件。註冊中介軟體後,會新增一個 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 %}:當您直接透過 CDN 或靜態檔案引入 HTMX 時,這是用於額外插入偵錯擴充腳本的輔助標籤。
特別令人印象深刻的是 django_htmx.http 模組中包含的11 種實用方法。其中,trigger_client_event() 更是脫穎而出。它能讓您輕鬆地在伺服器端配置 HX-Trigger 標頭並隨回應發送,從而直接從伺服器控制客戶端事件。一旦熟悉,這將是一個您會頻繁使用的強大工具。
當然,所有這些功能都可以由開發者自行編寫中介軟體或操作標頭來實現。因此,如果您像我一樣偏好親自打造,可能不會覺得這是一個必要的套件。
總而言之,django-htmx 雖然不是「不可或缺」,但它確實是一個「擁有後能顯著提升開發體驗」的套件。官方文件內容不多,只需花一兩個小時就能充分了解,您可以根據自己的專案特性來決定是否引入。
總結
如果您只想實現簡單的切換按鈕或幾個按讚功能,那麼直接使用 (CDN) 就已足夠。避免增加不必要的依賴可能是最經濟實惠的做法。
然而,如果專案規模擴大,並且需要頻繁地在單一視圖中同時處理整個頁面和部分頁面,那麼django-htmx 也是值得考慮的。
您更傾向於哪種方式呢?事實上,django-htmx 並不是一個沉重的套件,反而相當輕量,所以直接無腦安裝並使用它或許才是正解。這一切都只是開發者的個人偏好和習慣問題,例如「我想要最小化依賴套件」或「我喜歡親自動手做」這類開發者特質所決定的。
不過,無論您做出何種選擇,有了 HTMX,您都將能擺脫 JavaScript 的束縛,再次體驗回歸 HTML 簡潔性的樂趣。
延伸閱讀 :