怎样通过一个简单的待办事项案例入门Django开发

访客 全栈框架 1

如何通过一个简单的待办事项案例入门Django开发

目录导读

  1. 为什么选择待办事项案例学习Django?
  2. 环境搭建与项目初始化
  3. 设计数据库模型(Model)
  4. 创建视图与模板(View & Template)
  5. 配置URL路由
  6. 运行测试与常见问题解答
  7. 总结与下一步学习建议

为什么选择待办事项案例学习Django?

对于编程新手或想快速入门Web框架的开发者,待办事项应用(Todo App) 是最经典的入门项目,它涵盖了Django的核心功能:数据库操作、路由分发、模板渲染,同时逻辑简单,不会因业务复杂而分散注意力,据统计,超过60%的Django初学者首选待办事项作为第一个实践项目,通过这个案例,你将在40分钟内掌握Django开发的基本流程。


环境搭建与项目初始化

步骤1:安装Python与虚拟环境

确保你的电脑已安装Python 3.8+(推荐3.10),打开终端,创建一个专属虚拟环境:

python -m venv todo_env
source todo_env/bin/activate  # Mac/Linux
todo_env\Scripts\activate     # Windows

步骤2:安装Django

pip install django

验证安装:python -m django --version,应显示4.0以上版本。

步骤3:创建项目与应用

django-admin startproject todo_project
cd todo_project
python manage.py startapp todo

现在你的项目结构应类似:

todo_project/
    manage.py
    todo_project/ (settings.py, urls.py 等)
    todo/ (models.py, views.py 等)

设计数据库模型(Model)

打开 todo/models.py,编写一个简单的任务模型:

from django.db import models
class Task(models.Model):= models.CharField(max_length=200)
    completed = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return self.title

关键点说明:

  • CharField 存储字符串,max_length=200 限制标题长度
  • BooleanField 标记任务是否完成,默认 False
  • auto_now_add=True 自动记录创建时间

然后运行迁移命令,将模型同步到数据库:

python manage.py makemigrations
python manage.py migrate

常见问题: 为什么需要执行 makemigrationsmigrate 两次?
答: makemigrations 生成迁移文件(记录模型变更),migrate 将变更应用到实际数据库,这是Django管理数据库变更的标准方式。


创建视图与模板(View & Template)

视图(Views) 负责处理用户请求并返回响应,我们创建两个视图:一个显示任务列表,一个添加新任务。

打开 todo/views.py

from django.shortcuts import render, redirect
from .models import Task
from .forms import TaskForm  # 稍后创建
def task_list(request):
    tasks = Task.objects.all().order_by('-created_at')
    form = TaskForm()
    return render(request, 'todo/task_list.html', {'tasks': tasks, 'form': form})
def add_task(request):
    if request.method == 'POST':
        form = TaskForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('task_list')
    return redirect('task_list')

模板(Templates) 是HTML文件,在 todo/ 文件夹内创建 templates/todo/ 目录,然后新建 task_list.html

<!DOCTYPE html>
<html>
<head>我的待办事项</title>
</head>
<body>
    <h1>待办事项</h1>
    <form method="post" action="{% url 'add_task' %}">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">添加任务</button>
    </form>
    <ul>
        {% for task in tasks %}
            <li>
                {{ task.title }}
                {% if task.completed %} ✅ {% endif %}
            </li>
        {% empty %}
            <li>暂无任务,添加一个吧!</li>
        {% endfor %}
    </ul>
</body>
</html>

需要创建表单:todo/ 下新建 forms.py

from django import forms
from .models import Task
class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ['title']

配置URL路由

应用内路由:todo/ 下创建 urls.py

from django.urls import path
from . import views
urlpatterns = [
    path('', views.task_list, name='task_list'),
    path('add/', views.add_task, name='add_task'),
]

项目主路由: 修改 todo_project/urls.py

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('todo.urls')),  # 将根路径指向todo应用
]

注意:确保在 settings.pyINSTALLED_APPS 中添加了 'todo'


运行测试与常见问题解答

启动开发服务器:

python manage.py runserver

打开浏览器访问 http://127.0.0.1:8000/,你应该能看到待办事项页面,输入任务标题并点击“添加任务”,新任务就会出现在列表中。

常见问答:

Q1:为什么页面显示“Page not found (404)”?
A:检查 urls.py 中是否正确定义了路径,以及 include 语句是否配置正确,重启服务器试一下。

Q2:添加任务后页面不显示新内容?
A:确认视图中的 return redirect('task_list') 正确,且 task_list 视图确实查询了所有任务,可以在视图中加 print(tasks) 调试。

Q3:CSRF验证失败怎么办?
A:所有POST表单必须包含 {% csrf_token %},这是Django的安全机制,如果你的模板遗漏了它,请立即添加。

Q4:如何让任务列表只显示未完成的任务?
A:修改视图中的查询:tasks = Task.objects.filter(completed=False).order_by('-created_at')


总结与下一步学习建议

通过这个待办事项案例,你已经掌握了Django开发的核心三要素:Model(和数据库交互)、View(业务逻辑)、Template(用户界面),这是MVC模式在Django中的体现,也是许多复杂Web应用的基础。

进阶推荐:

  1. 添加删除和标记完成功能:为每个任务添加删除按钮和复选框。
  2. 使用Bootstrap美化界面:引入CSS框架让页面更专业。
  3. 部署到生产环境:学习使用Gunicorn+Nginx部署你的第一个Django应用。
  4. 加入用户认证:让不同用户拥有自己的待办事项列表。

边学边做是掌握Django的最佳方式,打开终端,动手创建你的第一个待办事项应用吧!

标签: Django开发

抱歉,评论功能暂时关闭!