核心概念:Django 是什么?
Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计,当你用 Django 搭建服务器时,你实际上是在构建一个遵循 MVT 架构模式的应用程序。

MVT 架构详解:
想象一个在线商店的订单处理流程:
-
Model (模型层 - M): 负责数据结构和业务逻辑。
- 作用: 定义你的数据是什么样的,一个
Order模型会有哪些字段(订单号、用户、商品列表、总价、下单时间等),它还负责与数据库交互(增、删、改、查)。 - 类比: 数据库的“设计图纸”。
- 作用: 定义你的数据是什么样的,一个
-
View (视图层 - V): 负责业务逻辑和流程控制。
(图片来源网络,侵删)- 作用: 接收来自用户(浏览器)的请求,调用 Model 层获取或修改数据,然后将处理结果交给 Template 层渲染成 HTML 页面,最后返回给用户,它是一个“中间人”,连接了数据和展示。
- 类比: 商店的“店长”,他接收顾客(用户)的需求,查看库存(Model),决定如何处理,然后告诉店员(Template)如何打包商品(渲染页面)。
-
Template (模板层 - T): 负责展示层的呈现。
- 作用: 一个含有占位符的 HTML 文件,视图层会把真实的数据填充到这些占位符中,最终生成用户看到的完整网页。
- 类比: 商品包装盒的设计图,上面写着“[顾客姓名]”、“[商品名称]”等,店长会把具体信息填上去。
工作流程总结:
用户请求 -> URL 路由 -> View (视图) -> Model (模型) -> 数据库 -> Model (返回数据) -> View (处理数据) -> Template (模板) -> 生成 HTML -> 返回给用户
动手实践:搭建你的第一个 Django 项目
我们将创建一个简单的“待办事项”应用。

步骤 1: 环境准备
- 安装 Python: 确保你的电脑上安装了 Python (推荐 3.8+ 版本)。
- 安装 Django: 打开终端或命令行,使用
pip安装 Django。pip install django
步骤 2: 创建项目和 App
Django 的项目结构是分层的,一个项目可以包含多个应用。
-
创建项目:
django-admin是 Django 的命令行工具。# mysite 是你的项目文件夹名 django-admin startproject mysite
-
进入项目目录:
cd mysite
-
创建 App:
App是一个功能模块,我们的待办事项就是一个 App。# todos 是我们的应用名 python manage.py startapp todos
现在你的项目结构应该像这样:
mysite/
├── manage.py
├── mysite/ # 项目配置文件
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── todos/ # 我们创建的 App
├── __init__.py
├── admin.py
├── apps.py
├── migrations/
├── models.py
├── tests.py
└── views.py
步骤 3: 定义数据模型
打开 todos/models.py,定义我们的待办事项模型。
# todos/models.py
from django.db import models
class TodoItem(models.Model):= models.CharField(max_length=200) # 标题,最大长度200
completed = models.BooleanField(default=False) # 是否完成,默认为否
created_at = models.DateTimeField(auto_now_add=True) # 创建时间,自动记录
def __str__(self):
return self.title
步骤 4: 注册 App 并创建数据库表
-
注册 App: 打开
mysite/settings.py,在INSTALLED_APPS列表中添加我们的todosApp。# mysite/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'todos', # 添加这一行 ] -
创建数据库迁移文件: Django 会根据你的模型生成数据库操作指令。
python manage.py makemigrations
-
执行迁移: 真正地在数据库中创建表。
python manage.py migrate
步骤 5: 创建视图和 URL
-
创建视图: 打开
todos/views.py,编写一个简单的视图来显示所有待办事项。# todos/views.py from django.shortcuts import render from .models import TodoItem def todo_list(request): # 从数据库获取所有待办事项 todos = TodoItem.objects.all() # 将数据传递给模板 context = { 'todos': todos } # 渲染模板并返回给用户 return render(request, 'todos/todo_list.html', context) -
配置 URL: 让 URL 知道当访问某个地址时,应该调用哪个视图。
-
在 App 内部创建 URL 配置文件
todos/urls.py。# todos/urls.py from django.urls import path from . import views urlpatterns = [ # 当访问根路径 / 时,调用 views.todo_list 函数 path('', views.todo_list, name='todo_list'), ] -
在项目的主 URL 配置文件
mysite/urls.py中引入 App 的 URL。# mysite/urls.py from django.contrib import admin from django.urls import path, include # 别忘了导入 include urlpatterns = [ path('admin/', admin.site.urls), path('todos/', include('todos.urls')), # 所有 /todos/ 开头的请求,都交给 todos.urls 处理 ]
-
步骤 6: 创建模板
-
创建模板目录: 在
todosApp 下创建templates/todos/目录。# 在 mysite 目录下执行 mkdir -p todos/templates/todos
-
创建模板文件: 在
todos/templates/todos/目录下创建todo_list.html。<!-- todos/templates/todos/todo_list.html --> <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>我的待办事项</title> <style> body { font-family: sans-serif; margin: 2em; } .todo-item { padding: 10px; border: 1px solid #ccc; margin-bottom: 5px; } .completed { text-decoration: line-through; color: gray; } </style> </head> <body> <h1>我的待办事项</h1> <ul> <!-- 遍历视图传来的 todos 数据 --> {% for todo in todos %} <li class="todo-item {% if todo.completed %}completed{% endif %}"> {{ todo.title }} (创建于: {{ todo.created_at }}) </li> {% empty %} <li>暂无待办事项</li> {% endfor %} </ul> </body> </html>
步骤 7: 运行开发服务器
一切就绪!让我们启动 Django 自带的开发服务器。
python manage.py runserver
你会看到类似下面的输出:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 10, 2025 - 15:45:00
Django version 4.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
**打开浏览器,访问 `http://127.
