此存储库包含“服务器端已死!服务器端万岁 (+ HTMX)”演讲的示例代码和幻灯片,在 DjangoCon US 2021 上给出,然后(修改)为 2021 年 12 月的代码代码。
示例
消息收件箱功能(读取/存档)
一键设置
多个选项卡中的多个表单
惰性数据弹出窗口
幻灯片
视频
资源
以下是我所讨论的示例的屏幕截图,从纯 Django 模板(在settings
示例中加上一些 ajax)过渡到 Django + HTMX。 examples
文件夹包含一个包含每个示例的 django 项目。
请记住,为了使我在演讲中讨论的概念尽可能清晰,这些示例被精简到绝对最少,因此这些示例没有考虑安全最佳实践。例如,在settings
示例中,您希望使用@login_required
装饰视图。
该示例包括用于快速启动和运行的装置。迁移、加载设备并启动 runserver 后,使用凭证user
pass
登录 admin (http://127.0.0.1:8000/admin/),然后转到主页 (http://127.0.0.1:8000/) 。
如何添加单击图标来存档邮件的功能,而无需刷新整个页面即可查看更改?这是一个例子。
在此示例中,我们允许当前用户通过一组复选框(与数据库中的 BooleanField 字段相关)更改其设置,而无需刷新页面。他们还会收到更新的瞬时提醒。
此示例展示了一个用例,其中单个网页上需要多个表单,每个表单都隐藏在自己的选项卡中。我们使用 HTMX 仅在需要时加载每个选项卡的内容,并提交每个表单而无需刷新页面。
此示例展示了一个用例,其中数据丰富的地图(或数据表等)利用带有附加信息的弹出窗口。我们可以在用户单击地图功能时延迟加载弹出窗口内容,而不是在页面加载时加载所有弹出窗口内容。
演讲中讨论的每种模式都提供了一个演示项目。
安装需求pip install -r requirements.txt
迁移python manage.py migrate
安装装置python manage.py loaddata fixtures.json
运行服务器python manage.py runserver
使用凭据登录管理员http://127.0.0.1:8000/admin/
: user
和pass
转到主页http://127.0.0.1:8000/
并使用导航选项尝试各种演示。提示:打开浏览器的开发工具窗格。
幻灯片可在媒体文件夹中找到。您可以在这里直接访问它们:
下载 OpenDocument 演示文件
查看 OpenDocument 平面 XML 演示文稿文件
DjangoConUS 2021 YouTube 播放列表上的视频 Code Code Code YouTube 播放列表上的视频
演讲中提到的资源:
htmx.org - HTMX 示例、参考资料和更多资源的主页。
django-htmx - Adam Johnson 的 django 包,其中包含有用的实用程序,可以更轻松地集成 Django 和 HTMX。
Awesome-htmx - 演讲、博客文章、示例和其他与 HTMX 相关的内容的链接。
HTMX Discord - 非常活跃的社区委员会,用于讨论 HTMX 和 Django + HTMX。
Reddit 上的 r/htmx
GitHub 上的 HTMX
_hyperscript - 一个推测性的 javascript 库,旨在与 HTMX 一起工作。简化事件处理程序的编写和开发高度响应的用户界面。
Alpine.js - 一个轻量级 javascript 库,用于直接在标记中编写行为,与 HTMX 配合良好。