このコンテンツは変更されます。
## はじめに {#sec-8f30851140f6} Web開発の環境は、ますます複雑化しています。ReactやVue.jsのようなフロントエンドフレームワークは強力ですが、すべてのプロジェクトで必ずしも必要とされるわけではありません。特に、シンプルな動的機能を実装したい場合、これらのフレームワークは過剰な複雑さをもたらすことがあります。 **[[HTMX]]**は、このような問題を解決するために登場した**軽量なHTML中心のライブラリ**です。Djangoのようなサーバーサイドフレームワークとうまく統合され、動的なWebアプリケーションを簡単に構築できます。  ## [[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
このコンテンツは変更されます。
新しいコンテンツがここに表示されます。
``` ### 動作結果 {#sec-8475f6be53ff} 1. ユーザーがボタンをクリックすると、`/update/` URLへ`GET`リクエストが発行されます。 2. サーバーは`partials/content.html`テンプレートを返し、`