介绍
有效管理任务在我们忙碌的生活中至关重要,而待办事项列表应用程序可以成为保持井井有条的绝佳工具。这篇博文将引导您完成使用 Django(一个强大且多功能的 Python Web 框架)开发待办事项列表应用程序的过程。该项目名为 django-todoList,旨在帮助用户无缝创建、管理和跟踪他们的日常任务。
先决条件
在我们开始之前,请确保您具备以下条件:
已安装 Python(最好是 3.8 或更高版本)。
已安装 Django。如果没有,您可以使用以下命令安装它。
pip install django
- 基本了解 Django 的工作原理并熟悉 Python 和 HTML。
第 1 步:设置项目
1.1 创建Django项目
首先,使用命令创建一个新的 Django 项目:
django-admin startproject mysite
导航到您的项目文件夹:
cd mysite
1.2 创建 Django 应用程序
接下来,在项目中创建一个应用程序。我们将其称为 todoList:
python manage.py startapp todoList
第 2 步:定义模型
在 Django 中,模型用于定义数据的结构。对于 GetDone 待办事项应用程序,我们需要一个模型来表示任务。
导航到 todoList/models.py 并定义任务模型:
from django.db import models from django.contrib.auth.models import User class Task(models.Model): title = models.CharField(max_length=200) description = models.TextField() complete = models.BooleanField(default=False) created = models.DateTimeField(auto_now_add=True) deadline = models.DateTimeField(null=True, blank=True) user = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return self.title
该模型包括标题、描述、截止日期和完成等字段,用于存储每个任务的详细信息。我们还通过用户外键将每个任务与用户关联。
2.1 迁移数据库
模型准备就绪后,运行迁移以在数据库中为此模型创建表:
python manage.py makemigrations python manage.py migrate
第 3 步:创建表格
我们需要表单来处理用户输入以创建和更新任务。在 todoList/forms.py 中,创建 TaskForm:
from django import forms from .models import Task class TaskForm(forms.ModelForm): class Meta: model = Task fields = ['title', 'description', 'deadline', 'complete'] widgets = { 'title': forms.TextInput(attrs={'placeholder': 'Enter task title'}), 'description': forms.Textarea(attrs={'placeholder': 'Enter task description', 'rows': 4}), 'deadline': forms.DateTimeInput(attrs={'type': 'datetime-local'}), 'complete': forms.CheckboxInput(), } def clean_title(self): title = self.cleaned_data.get('title') if not title: raise forms.ValidationError('Title is required') return title def clean_description(self): description = self.cleaned_data.get('description') if not description: raise forms.ValidationError('Description is required') return description def clean_deadline(self): deadline = self.cleaned_data.get('deadline') if not deadline: raise forms.ValidationError('Deadline is required') return deadline
TaskForm 使用 Django 的 ModelForm 为 Task 模型自动创建表单字段。
第 4 步:定义视图
接下来,我们需要创建视图来处理用户请求,例如创建任务、更新任务和列出任务。
在todoList/views.py中,定义视图:
from django.shortcuts import render, redirect from django.views.generic import ListView, CreateView, UpdateView, DeleteView from django.contrib.auth.views import LoginView from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.forms import UserCreationForm from django.urls import reverse_lazy from .models import Task from .forms import TaskForm from django.contrib import messages from django.utils import timezone # Task List View class TodoListView(LoginRequiredMixin, ListView): model = Task context_object_name = 'tasks' template_name = 'task_list.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) user_tasks = Task.objects.filter(user=self.request.user) context['tasks'] = Task.objects.filter(user=self.request.user) context['incomplete_tasks_count'] = user_tasks.filter(complete=False).count() # Count incomplete tasks context['now'] = timezone.now() return context # Task Create View class TaskCreate(LoginRequiredMixin, CreateView): model = Task form_class = TaskForm template_name = 'todoList/task_create.html' success_url = reverse_lazy('todoList') def form_valid(self, form): form.instance.user = self.request.user messages.success(self.request, 'Task created successfully!') return super(TaskCreate, self).form_valid(form) # Task Update View class TaskUpdate(LoginRequiredMixin, UpdateView): model = Task form_class = TaskForm template_name = 'todoList/task_update.html' success_url = reverse_lazy('todoList') def form_valid(self, form): messages.success(self.request, 'Task updated successfully!') return super(TaskUpdate, self).form_valid(form) # Task Delete View class TaskDelete(LoginRequiredMixin, DeleteView): model = Task context_object_name = 'task' template_name = 'todoList/task_delete.html' success_url = reverse_lazy('todoList') def dispatch(self, request, *args, **kwargs): response = super().dispatch(request, *args, **kwargs) if response.status_code == 302: messages.success(self.request, 'Task deleted successfully!') return response # User Registration View class RegisterView(CreateView): form_class = UserCreationForm template_name = 'todoList/register.html' success_url = reverse_lazy('todoList') def form_valid(self, form): response = super().form_valid(form) # Log the user in after successful registration from django.contrib.auth import login login(self.request, self.object) messages.success(self.request, 'Registration successful! Welcome!') return response # Login View class CustomLoginView(LoginView): template_name = 'todoList/login.html' fields = '__all__' redirect_authenticated_user = True def get_success_url(self): messages.success(self.request, 'You have logged in successfully!') return reverse_lazy('todoList')
-TodoListView:列出登录用户的所有任务。
-TaskCreate:处理任务创建。
-TaskUpdate:允许用户更新任务。
-TaskDelete:提供删除任务的确认页面。
LoginRequiredMixin 确保只有登录的用户才能访问这些视图。
第 5 步:配置 URL
在 todoList/urls.py 中,将 URL 映射到各自的视图:
pip install django
这些 URL 模式会将每个视图映射到特定的 URL。例如,任务列表显示在应用的根URL处,用户可以通过访问特定URL来创建、编辑或删除任务。
第 6 步:创建模板
创建以下 HTML 模板来渲染视图:
6.1 基础.html
基本模板为所有页面提供一致的布局:
django-admin startproject mysite
第8步:添加用户身份验证
在views.py中,你可以使用Django内置的用户认证视图来处理用户注册和登录。例如,您可以使用 UserCreationForm 来允许用户注册:
cd mysite
第 8 步:运行服务器
一切设置完毕后,您就可以运行服务器了:
python manage.py startapp todoList
访问 http://127.0.0.1:8000/todoList 查看您的待办事项列表应用程序的运行情况!
了解 mysite 文件夹中的 settings.py 和 urls.py
设置.py
settings.py 文件是每个 Django 项目的重要组成部分。它包含项目的配置设置,例如数据库设置、安装的应用程序、中间件、静态文件配置等。该文件控制项目的行为并允许 Django 连接各个组件之间的点。
以下是 GetDone 待办事项列表应用的 settings.py 中关键设置的简要概述:
settings.py 中的关键部分:
已安装的应用程序:在 INSTALLED_APPS 列表中,您注册项目中使用的所有应用程序。例如:
from django.db import models from django.contrib.auth.models import User class Task(models.Model): title = models.CharField(max_length=200) description = models.TextField() complete = models.BooleanField(default=False) created = models.DateTimeField(auto_now_add=True) deadline = models.DateTimeField(null=True, blank=True) user = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return self.title
在这里,我们添加了 todoList,它是管理任务的应用程序,以及 Django 提供的用于用户身份验证、管理面板和静态文件的默认应用程序。
urls.py
在 Django 中,urls.py 文件处理 HTTP 请求到视图的路由。您可以在此处将 URL 模式(例如 /tasks/、/login/)映射到处理它们的相应视图。
在 mysite/urls.py 中,您通常包含整个项目的 URL,并将它们链接到应用程序级 urls.py 文件。
这是 urls.py 在 GetDone 应用程序中的样子:
urls.py 中的关键部分:
项目级 urls.py (mysite/urls.py):mysite 文件夹中的 urls.py 文件是整个 Django 项目的主路由器。它包括管理面板、身份验证的 URL 以及指向应用程序特定 URL 的链接。这是一个例子:
pip install django
path('admin/', admin.site.urls):此行包含 Django 管理面板。
path('accounts/', include('django.contrib.auth.urls')): 这包括用于登录、注销和密码管理的内置身份验证 URL。
path('', include('todoList.urls')):这包括应用程序特定的 URL(在 todoList/urls.py 中定义),以便用户可以浏览任务和其他功能。
应用程序级 urls.py (todoList/urls.py):此文件将特定 URL 映射到 todoList 应用程序中的视图。它包含用于查看任务、创建任务和其他与任务相关的操作的路径。例如:
django-admin startproject mysite
TodoListView.as_view():此视图列出登录用户的所有任务。
TaskCreate.as_view():该视图处理任务创建表单。
TaskUpdate.as_view():该视图处理任务更新表单。
TaskDelete.as_view():该视图处理任务删除确认页面。
文件之间的通信
Django 的架构允许不同文件和组件之间顺利通信:
URL 和视图:
urls.py 将 URL 映射到视图,例如任务创建或列表查看。视图在views.py中定义。
模型和视图:
视图与模型(在 models.py 中定义)交互以检索和操作数据(任务)。例如,在 TodoListView 中,视图使用 Task.objects.filter(user=self.request.user) 获取与登录用户关联的任务。
表格和视图:
表单(如 forms.py 中的 TaskForm)处理用户输入并与模型交互以验证和保存数据。
模板:
模板以 HTML 形式呈现最终输出,显示从视图传递的数据并通过表单处理用户输入。
结论
通过这些步骤,您已经使用 Django 构建了一个功能齐全的待办事项列表应用程序。您已经实现了用户身份验证、任务管理(创建、编辑、删除),并了解了 Django 的 MVC (MTV) 架构如何促进模型、视图、模板和 URL 之间的顺畅通信。本指南为将来构建更复杂的 Django 应用程序奠定了坚实的基础。
应用程序的完整代码可在
克隆
cd mysite
编码愉快! ?
以上是完成 ✅:构建 Django 待办事项列表的分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3 Linux新版
SublimeText3 Linux最新版