## 开始 {#sec-8f30851140f6} Web 开发环境日益复杂。尽管 React 和 Vue.js 等前端框架功能强大,但并非所有项目都必需它们。尤其是在只需要实现简单动态功能时,这些框架可能会带来不必要的复杂性。 **[[HTMX]]** 是一个为解决这些问题而生的**轻量级、以 HTML 为中心的库**,它能与 Django 等服务器端框架良好集成,从而简化动态 Web 应用程序的构建。 ![HTMX 标志](/media/whitedec/blog_img/6a4d609fb5e24c35a5c4c1e080ae1082.webp) ## 什么是 [[HTMX]]? {#sec-a0108dfea168} HTMX 是一个轻量级的 JavaScript 库,旨在简化动态 Web 开发。它允许您仅通过 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-9a6eada85ca7} ### 基本 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 开发(第二部分)](/ko/whitedec/2025/1/27/django-htmx-dynamic-web-simplification-2/) - [使用 Django 和 HTMX 简化动态 Web 开发(第三部分)](/ko/whitedec/2025/1/27/django-htmx-dynamic-web-simplification-3/) - [使用 Django 和 HTMX 简化动态 Web 开发(第四部分):HTML 返回方式](/ko/whitedec/2025/1/27/django-htmx-csrf-token-integration/) - [使用 Django 和 HTMX 简化动态 Web 开发(第五部分):JSON 返回方式](/ko/whitedec/2025/1/27/django-htmx-advanced-features/) - [使用 Django 和 HTMX 简化动态 Web 开发(第六部分):HTML 返回方式](/ko/whitedec/2025/1/27/django-htmx-html-response/) - [使用 Django 和 HTMX 简化动态 Web 开发(第七部分):JSON 返回方式](/ko/whitedec/2025/1/27/django-htmx-json-response/)