## はじめに {#sec-8f30851140f6} Web開発の環境は、ますます複雑化しています。ReactやVue.jsのようなフロントエンドフレームワークは強力ですが、すべてのプロジェクトで必ずしも必要とされるわけではありません。特に、シンプルな動的機能を実装したい場合、これらのフレームワークは過剰な複雑さをもたらすことがあります。 **[[HTMX]]**は、このような問題を解決するために登場した**軽量なHTML中心のライブラリ**です。Djangoのようなサーバーサイドフレームワークとうまく統合され、動的なWebアプリケーションを簡単に構築できます。 ![HTMXのロゴ](/media/whitedec/blog_img/6a4d609fb5e24c35a5c4c1e080ae1082.webp) ## [[HTMX]]とは何か? {#sec-a0108dfea168} HTMXは、動的なWeb開発をシンプルにするために作られた軽量な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-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. **シンプルな動的Web開発**: JavaScriptなしでAJAXのような動的機能を簡単に実装できます。 2. **サーバー中心のロジック維持**: ビジネスロジックがサーバーにあるため、セキュリティとメンテナンスの面で有利です。 3. **フロントエンドフレームワークの代替**: React、Vue.jsのような重いフレームワークなしでもユーザーエクスペリエンスを向上させることができます。 ## 今回のまとめ {#sec-84994179e785} HTMXはDjangoとの高い互換性を持ち、複雑さを抑えつつも動的なWeb開発を可能にします。既存のフロントエンドフレームワークを代替できるほど強力かつシンプルであるため、プロジェクトへの導入を強くお勧めします。 次回は、**[[HTMX]]とAjaxの関係**、そしてReactとの違いについて詳しく見ていきます。**AjaxリクエストとHTMXの動作例**を通じて、さらに深くHTMXを掘り下げていきましょう。ご期待ください! **関連記事**: - [DjangoとHTMXで動的Web開発をシンプルにする(パート2)](/ko/whitedec/2025/1/27/django-htmx-dynamic-web-simplification-2/) - [DjangoとHTMXで動的Web開発をシンプルにする(パート3)](/ko/whitedec/2025/1/27/django-htmx-dynamic-web-simplification-3/) - [DjangoとHTMXで動的Web開発をシンプルにする(パート4):CSRFトークンの統合](/ko/whitedec/2025/1/27/django-htmx-csrf-token-integration/) - [DjangoとHTMXで動的Web開発をシンプルにする(パート5):高度な機能](/ko/whitedec/2025/1/27/django-htmx-advanced-features/) - [DjangoとHTMXで動的Web開発をシンプルにする(パート6):HTML返却方式](/ko/whitedec/2025/1/27/django-htmx-html-response/) - [DjangoとHTMXで動的Web開発をシンプルにする(パート7):JSON返却方式](/ko/whitedec/2025/1/27/django-htmx-json-response/)