使用 Django 和 HTMX 创建待办事项应用程序 – 创建前端并添加 HTMX 部分

本系列文章的第三部分带您深入学习如何结合 htmx 和 django 构建动态待办事项列表。如果您错过了前两部分,建议先阅读。

模板和视图的创建

我们将创建一个基础模板和一个指向索引视图的索引模板,该视图列出数据库中的待办事项。我们将使用 DaisyUI(Tailwind CSS 的扩展)来美化界面。

这是添加 htmx 之前的页面截图:

使用 Django 和 HTMX 创建待办事项应用程序 - 创建前端并添加 HTMX 部分

视图和 URL 的添加

首先,更新项目根目录中的 urls.py 文件,以包含我们在“核心”应用程序中定义的 URL:

立即学习“前端免费学习笔记(深入)”;

# todomx/urls.pyfrom django.contrib import adminfrom django.urls import include, path

接下来,为应用程序定义新的 URL,创建一个新的文件 core/urls.py

# core/urls.pyfrom django.urls import pathfrom . import viewsurlpatterns = [    path("", views.index, name="index"),    path("tasks/", views.tasks, name="tasks"),    path("tasks//", views.toggle_todo, name="toggle_todo"),]

然后创建相应的视图,位于 core/views.py

# core/views.pyfrom django.shortcuts import redirect, renderfrom .models import userprofile, todofrom django.contrib.auth.decorators import login_requiredfrom django.views.decorators.http import require_http_methodsfrom django.http import HttpResponsedef index(request):    return redirect("tasks/")def get_user_todos(user: userprofile) -> list[todo]:    return user.todos.all().order_by("created_at")@login_requireddef tasks(request):    context = {        "todos": get_user_todos(request.user),        "fullname": request.user.get_full_name() or request.user.username,    }    return render(request, "tasks.html", context)@require_http_methods(["PUT"])@login_requireddef toggle_todo(request, task_id):    todo_item = todo.objects.get(pk=task_id)    todo_item.completed = not todo_item.completed    todo_item.save()    return render(request, "partials/todo-item-partial.html", {"todo": todo_item})

索引路由将重定向到任务视图。任务视图需要登录,并返回用户的全名和待办事项列表。

接下来是模板。我们将为整个应用程序创建一个基础模板,包含 Tailwind CSS 和 DaisyUI,以及任务视图的模板:

{# _base.html #}                                {% block header %}    {% endblock %}    {% block content %}    {% endblock %}    {% block js %}    {% endblock %}
{# tasks.html #}{% extends "_base.html" %}{% load partials %}{% block content %}

{{ fullname }}'s tasks

    {% for todo in todos %} {% partial todo-item-partial inline todo %} {% endfor %}
{% endblock %}
{# partials/todo-item-partial.html #}{% load partials %}
  • {{ todo.title }}
  • 我们从 CDN 添加 Tailwind 和 DaisyUI,生产环境应捆绑到应用程序中。我们使用 DaisyUI 5.0 测试版。

    添加内联部分模板

    我们将安装 django-template-partials 插件:

    pip install django-template-partials

    更新 settings.py 文件:

    INSTALLED_APPS = [    # ...    "template_partials",    # ...]

    tasks.html 中,我们将每个待办事项定义为内联部分模板。

    使用 htmx 切换待办事项完成状态

    我们将使用 PUT 方法为待办事项实现一个新的 URL 和视图。该视图将返回更新的待办事项的部分模板。

    _base.html 中添加 htmx:

    core/urls.py 中添加新路由: (已在前面添加)

    core/views.py 中添加视图: (已在前面添加)

    现在,您可以测试切换待办事项的完成状态。网络工具将显示 PUT 请求和部分 HTML 响应。

    使用 Django 和 HTMX 创建待办事项应用程序 - 创建前端并添加 HTMX 部分

    使用 Django 和 HTMX 创建待办事项应用程序 - 创建前端并添加 HTMX 部分

    使用 Django 和 HTMX 创建待办事项应用程序 - 创建前端并添加 HTMX 部分

    应用程序已 htmx 化! 下一部分将添加添加和删除任务的功能。

    以上就是使用 Django 和 HTMX 创建待办事项应用程序 – 创建前端并添加 HTMX 部分的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1355361.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2025年12月13日 19:11:46
    下一篇 2025年12月13日 19:11:52

    相关推荐

    • 用于高效代码故障排除的 Python 调试工具综合指南

      Python调试技巧:提升开发效率的利器 高效的调试是Python开发中不可或缺的一部分。本文将深入探讨Python生态系统中常用的调试工具,帮助您快速定位并解决代码问题,显著提升开发效率。 引言 Python程序的错误类型多样,从简单的语法错误到复杂的逻辑漏洞。调试过程旨在识别、隔离并修复这些错误…

      2025年12月13日
      000
    • 在项目中不使用 env 文件的主要安全风险

      软件开发中,保护敏感数据安全至关重要。许多项目使用.env文件存储api密钥、数据库凭证和环境变量等配置,这在妥善处理的情况下有助于隔离敏感信息。然而,忽视.env文件的使用会带来严重的安全风险,危害代码完整性和用户隐私。 以下列举了10大安全隐患: 硬编码敏感信息: 直接在代码中存储API密钥、密…

      2025年12月13日
      000
    • 作为 Web 开发人员踏入 AI 领域

      作为一名资深Web开发者,我一直在思考软件工程的未来发展趋势。人工智能的崛起日益明显,掌握AI基础知识已成为行业发展的关键。 尽管我的数学基础并非十分扎实,我还是决定尝试学习AI。经过一番调研,我选择了FastAI,它非常适合AI初学者。 为什么选择 FastAI? FastAI是一个专为拥有编程经…

      2025年12月13日
      000
    • 创建本地环境以从 Flask 操作 GCS 模拟器

      本文介绍如何在本地环境中使用 GCS 模拟器,以便在 Cloud Run 上构建使用 Flask 操作 Google Cloud Storage (GCS) 的应用程序。 模拟器选择 我们采用 fsouza/fake-gcs-server 作为 GCS 模拟器。 示例代码及设置 示例代码已上传至 G…

      2025年12月13日
      000
    • 远程医疗和 RPM 在慢性病管理中的作用

      远程医疗和远程患者监测 (rpm) 在慢性病管理中日益凸显其重要性,并带来诸多优势: 1. 提升便利性和可及性: 远程咨询让患者在家即可与医疗服务提供者沟通,节省出行时间和费用;灵活的预约时间安排,更贴合患者的个人日程。 2. 增强患者参与度: RPM持续追踪血压、血糖等健康指标,鼓励患者积极参与自…

      2025年12月13日
      000
    • Python 行业模型

      Python 在各行各业的应用建模 Python 凭借其强大的功能和易用性,已成为构建和部署行业特定模型的热门编程语言。金融、医疗、电商和制造业等众多领域都利用 Python 解决实际问题,提升效率。其灵活性和可扩展性,加上丰富的库和框架支持,使其成为数据分析、机器学习、自动化和模拟的理想工具。 P…

      2025年12月13日
      000
    • 如何使用 Python 自动加密 Amazon RDS 实例

      本指南介绍如何使用python脚本自动加密amazon rds实例。为了满足合规性或安全需求,您可能需要加密现有的未加密rds实例。本脚本通过创建快照、加密复制快照以及从加密快照恢复新实例来实现这一目标。 为什么需要加密RDS实例? 加密RDS实例可确保静态数据安全,并满足PCI DSS、HIPAA…

      2025年12月13日
      000
    • 最小里约简介

      初探rio:一个轻量级python ui库 十一月初,Rio (https://www.php.cn/link/95009134498cf8501942c4970b0110ac) 发布公告,宣布推出这款用于创建用户界面的Python库。作为拥有多年Qt和Python经验的开发者,我对探索新的UI构建…

      2025年12月13日
      000
    • 在渲染中部署 Taipy 应用程序

      本教程将指导您如何在render平台上部署taipy应用程序。taipy是一个开源python库,简化了从原型开发到生产部署的全流程。render则是一个强大的应用构建、部署和扩展服务。 前提条件: 熟悉Python和GitHub。拥有GitHub账号 (点击此处创建)[此处应插入GitHub创建账…

      2025年12月13日 好文分享
      000
    • Day-Dictionary,使用嵌套循环的字符频率

      Python字典及字符频率分析 Python字典是一种灵活的数据结构,用于存储键值对。字典是无序的,可变的,且键必须唯一。本文将介绍字典的基本用法,并演示如何使用嵌套循环计算字符串中字符的频率,解决一系列字符统计问题。 字典的基本使用 字典用花括号{}定义,键值对用冒号:分隔,键值对之间用逗号,分隔…

      2025年12月13日
      000
    • 使用 pypyp 和 uv 的 Linux Shell 符合人体工程学的 Pyhon 文本管道解决方案

      摘要 本文简要介绍了基于 pypyp 和 uv 的 Linux 文本管道解决方案。该方案允许您充分利用已掌握的 Python 知识和库,无需学习 awk。本文重点阐述选择该方案的原因,而非使用方法细节。如需深入了解使用方法,请访问 pypyp 和 uv 的官方主页。 为何不用 awk? 在编写 Li…

      2025年12月13日
      000
    • 理解分词器:深入研究带有拥抱面孔的分词器

      自然语言处理 (NLP) 中的核心概念之一是标记化,尤其在处理语言模型时尤为重要。本文将深入探讨分词器的功能、工作机制,并演示如何借助 Hugging Face 的 Transformers 库 (https://www.php.cn/link/6d1be3a2fee8021297abde7f310…

      2025年12月13日
      000
    • 使用 Lambda 函数从 So DynamoDB 解析和加载数据

      本文介绍如何使用aws lambda函数将s3存储桶中的json数据加载到dynamodb表中。 先决条件: 拥有向S3上传对象的权限。拥有S3和DynamoDB权限的Lambda执行角色。 架构和组件: 本方案使用三个AWS服务: S3存储桶: 作为可扩展、安全、高性能的对象存储服务,用于存储数据…

      2025年12月13日 好文分享
      000
    • 使用Python进行对称数据加密

      本教程将演示如何在Python中使用Fernet算法进行对称加密。这是一种简单易用的方法,适合初学者入门。 首先,需要安装cryptography库: pip install cryptography 接下来,我们编写一个简单的加密脚本: from cryptography.fernet impor…

      2025年12月13日
      000
    • 标题:软件开发人员的旅程:从初学者到专家

      导语: 在数字时代,精通软件开发的工程师需求日益增长。软件开发领域瞬息万变,需要持续学习和适应。无论您是初入职场的新手,还是经验丰富的工程师,了解软件开发的成长路径都能助您在这一快速发展的行业中不断精进。 成为问题解决专家: 随着经验的积累,您的重点应从单纯编写代码转向解决实际问题。软件开发不仅在于…

      2025年12月13日
      000
    • 使用 AWS Bedrock 部署 AI 交通拥堵预测器:完整概述

      本文将指导您如何使用 AWS Bedrock 部署一个 AI 交通拥堵预测器,实现实时交通状况预测。AWS Bedrock 提供全托管的基础模型服务,非常适合 AI 应用部署。我们将涵盖从环境准备到最终测试的完整流程。 先决条件: 一个具有相应权限的 AWS 账户 (建议使用免费套餐)。Python…

      2025年12月13日
      000
    • PyTorch 中的 mul

      请我喝杯咖啡☕ 本文介绍PyTorch中的mul()函数。mul()函数用于执行元素级别的乘法运算,它可以处理多个维度张量以及标量。 mul()函数的用法 mul()函数接受两个参数:input和other。 input:可以是PyTorch张量或标量(int、float、complex或bool类…

      2025年12月13日
      000
    • 需要修复的常见 Django ORM 错误

      Django ORM是Django框架的核心功能之一,它以Pythonic的方式操作数据库,避免了直接编写SQL的繁琐。然而,不当使用ORM可能会导致性能瓶颈。本文将分析常见的Django ORM错误,并提供优化策略,提升应用效率和可维护性。 1. N+1 查询问题 当获取一组记录后,又针对每条记录…

      2025年12月13日
      000
    • 使用 Jupyter 和 Kotlin 创建笔记本

      探索kotlin与jupyter notebook的交互式编程之旅 最近,我开始学习Kotlin,这门现代且功能强大的编程语言吸引了我的目光。然而,我习惯了Jupyter Notebook的交互式环境,它能快速迭代并流畅地探索代码。因此,我开始寻找Kotlin是否也有类似的工具。 令人惊喜的是,我发…

      2025年12月13日 好文分享
      000
    • 我旅程的开始

      **_Hello World._** 大家好!我是一个新手博主,开启了这段激动人心的写作之旅,希望能提升我的英语写作能力(英语并非我的母语)。 我的目标是分享一些有价值的内容,无论您是新手还是专家,都能有所收获。 欢迎大家提出建议和意见! 我是 5enox,熟悉 Python 以及网页抓取/自动化。…

      2025年12月13日
      000

    发表回复

    登录后才能评论
    关注微信