文章目录
1. 实战概述
- 本实战通过搭建 Django 项目,创建 members 应用,完成虚拟环境配置、模型定义、数据库迁移、数据增删改查、模板渲染及详情页跳转等核心功能,系统演示了 Django Web 开发的完整流程。
2. 实战步骤
2.1 虚拟环境
2.1.1 创建虚拟环境
- 执行命令:
python -m venv myworld

- 执行命令:
tree myworld

2.1.2 激活虚拟环境
- 执行命令:
myworld\Scripts\activate.bat

- 执行激活批处理文件之后,进入
myworld虚拟环境

2.2 安装Django
2.2.1 安装Django最新版
- 执行命令:
pip install django

- 执行命令:
python -m pip install --upgrade pip

2.2.2 查看Django版本
- 执行命令:
django-admin --version,显示版本号:6.0

2.3 Django创建项目
2.3.1 进入虚拟目录
- 执行命令:
cd myworld

2.3.2 创建Django项目
- 执行命令:
django-admin startproject my_tennis_club

- 执行命令:
tree /f my_tennis_club

2.3.3 运行Django项目
-
执行命令:
cd my_tennis_club

-
执行命令:
python manage.py runserver

-
在浏览器里访问
http://localhost:8000

-
结果说明:该图显示 Django 项目成功启动,访问
localhost:8000后出现默认欢迎页面,表明 Django 安装和配置正确。页面提示“安装成功!恭喜!”并说明当前处于调试模式(DEBUG=True),且未配置任何 URL 路由,因此显示默认首页。这标志着开发环境已就绪,可开始创建应用和配置视图。
2.4 Django创建应用
2.4.1 创建Djangon应用
- 执行命令:
python manage.py startapp memebers

2.4.2 查看Django应用结构
- 执行命令:
tree /f members

- 结果说明:该图展示了 Django 应用
members的目录结构,包含核心文件models.py(定义数据模型)、views.py(处理业务逻辑)、urls.py(配置路由)、admin.py(管理后台配置)以及migrations文件夹(存储数据库迁移记录)。结构清晰,符合 Django 项目标准规范,便于开发与维护。 - 执行命令:
type members\views.py

- 结果说明:该图显示了 Django 应用
members中views.py文件的内容,文件为空(仅包含导入语句和注释),表明尚未定义任何视图函数。from django.shortcuts import render用于在视图中渲染 HTML 模板,当前项目处于初始状态,等待开发者添加具体业务逻辑的视图代码。
2.5 Django视图
2.5.1 Django视图概述
- Django 视图是 Python 函数,用于接收 HTTP 请求并返回 HTTP 响应,例如 HTML 文档。使用 Django 构建的网页包含多个视图,每个视图承担不同的任务和职责。视图通常放在应用目录下的一个名为 views.py 的文件中。
2.5.2 编辑视图文件
- 编辑
my_tennis_club/members/views.py文件

- 结果说明:该图展示了 Django 应用中
views.py文件的代码,定义了一个名为members的视图函数,接收 HTTP 请求并返回一个包含“Hello Django World”的 HTML 响应。该函数使用HttpResponse返回纯文本内容,是 Django 视图的基本实现方式,用于响应用户请求并展示页面内容。
2.6 Django路由
2.6.1 Django路由概述
- Django 路由(URLconf)用于将 URL 请求映射到对应的视图函数。通过
urls.py文件配置 URL 模式,使用path()或re_path()将路径与视图关联。项目主路由包含各应用的子路由,实现模块化管理,确保请求精准分发,是连接用户访问与后端逻辑的关键桥梁。
2.6.2 创建子路由文件
- 创建
my_tennis_club/members/urls.py

- 代码说明:该代码为 Django 应用
members的路由文件urls.py,定义了子应用的 URL 路由规则。通过path('members/', views.members, name='members')将/members/路径映射到views.members视图函数,实现请求分发。使用相对导入from . import views提高模块可读性,是 Django 项目中典型的子应用路由配置方式。
2.6.3 编辑主路由文件
-
编辑
my_tennis_club/my_tennis_club/urls.py

-
代码说明:该代码为 Django 项目的主路由文件
urls.py,定义了全局 URL 配置。通过path('', include('members.urls'))将根路径请求转发至members应用的子路由;path('admin/', admin.site.urls)映射到 Django 管理后台。使用include()实现模块化路由管理,结构清晰,便于扩展和维护。
2.6.4 运行Django项目
- 执行命令:
python manage.py runserver

2.6.5 访问会员视图
- 在浏览器里访问
http://localhost:8000/members/

2.6.6 访问后台管理页面
- 访问
http://localhost:8000/admin/login/?next=/admin/

2.7 Django模板
2.7.1 创建模板目录
- 在
memebers里创建templates目录

2.7.2 创建模板页面
- 在
tempates里创建welcome.html文件

2.7.3 修改视图文件
- 修改
my_tennis_club/members/views.py文件

2.7.4 修改设置
- 修改
my_tennis_club/my_tennis_club/settings.py文件

2.7.5 执行数据库迁移
- 执行命令:
python manage.py migrate

2.7.6 创建超级用户
- 执行命令:
python manage.py createsuperuser

2.7.7 运行Django项目
- 执行命令:
python manage.py runserver

2.7.8 访问会员视图
- 在浏览器里访问
http://localhost:8000/members/

2.7.9 访问后台管理页面
- 访问
http://localhost:8000/admin/login/?next=/admin/

- 输入用户名和密码

- 单击【Log in】按钮

2.8 Django模型
2.8.1 Django模型概述
- Django 模型(Model)是用于定义应用程序数据结构的 Python 类,每个模型对应数据库中的一张表。通过模型,开发者可以使用 Python 代码操作数据库,而无需直接编写 SQL 语句。Django 自动将模型字段映射为数据库列,并提供强大的 ORM(对象关系映射)功能,实现数据的增删改查。
2.8.2 创建Django模型
- 编辑
members/models.py文件

2.8.3 SQLite数据库
- 在我们创建 Django 项目时,系统自动生成了一个空的 SQLite 数据库。该数据库位于
my_tennis_club项目的根目录下,文件名为db.sqlite3。 默认情况下,Django 项目中定义的所有模型(Model)都会作为数据表创建在这个数据库中。

2.8.4 数据库迁移
- 执行命令:
python manage.py makemigrations members

- 结果说明:执行
python manage.py makemigrations members命令后,Django 为members应用生成了初始迁移文件0001_initial.py,该文件记录了Member模型的结构定义。此操作将模型变更转化为数据库可识别的迁移脚本,为后续应用到数据库做准备,是实现模型与数据库同步的关键步骤。

- 执行命令:
python manage.py migrate

- 结果说明:执行
python manage.py migrate命令后,Django 将所有未应用的迁移(包括 admin、auth、contenttypes、members 等)同步到数据库。其中members.0001_initial成功应用,表示Member模型对应的表已在数据库中创建完成,实现了模型与数据库结构的同步,为后续数据操作奠定了基础。
2.8.5 查看建表SQL语句
- 执行命令:``

- 结果说明:执行
python manage.py sqlmigrate members 0001命令后,Django 输出了members应用中0001_initial迁移对应的 SQL 语句。该语句展示了创建members_member表的完整结构,包括字段定义(如 id、firstname、lastname、gender、age)和约束条件,帮助开发者理解模型如何映射为数据库表,便于调试和学习。
2.9 Django插入数据
2.9.1 进入Python交互式环境
- 执行命令:
python manage.py shell

2.9.2 导入Member类
- 执行命令:
from members.models import Member

2.9.3 查询Member表
- 执行命令:
Member.objects.all()

- 结果说明:执行
Member.objects.all()返回一个 QuerySet 对象,表示数据库中所有 Member 记录的集合。当前结果为<QuerySet []>,说明数据库中尚未插入任何会员数据,QuerySet 为空。这是 Django ORM 查询的基本用法,用于获取模型的所有实例,后续可通过.create()等方法添加数据。
2.9.4 Member表插入多条记录
-
执行代码
member1 = Member(firstname='Tobias', lastname='Refsnes', gender='M', age=28) member2 = Member(firstname='Linus', lastname='Refsnes', gender='M', age=32) member3 = Member(firstname='Lene', lastname='Refsnes', gender='F', age=25) member4 = Member(firstname='Stale', lastname='Refsnes', gender='M', age=30) member5 = Member(firstname='Jane', lastname='Doe', gender='F', age=22) members_list = [member1, member2, member3, member4, member5] for x in members_list: x.save()
2.9.5 查询Member表记录
-
执行命令:
Member.objects.all().values()

-
执行代码
for member in Member.objects.all().values(): print(f"姓名: {member['firstname']} {member['lastname']}, 性别: {member['gender']}, 年龄: {member['age']}")
2.10 Django更新数据
-
执行命令:
rec3 = Member.objects.all()[2],获取第3条记录

-
执行命令:
rec3.id, rec3.firstname, rec3.lastname, rec3.gender, rec3.age

-
执行命代码
rec3.firstname = 'Black' rec3.lastname = 'Smith' rec3.gender = 'M' rec3.age = 53 rec3.save()
-
执行命令:
Member.objects.all().values()

-
执行命令:
Member.objects.all().values()[2]

2.11 Django删除数据
- 执行命令:
rec5 = Member.objects.all()[4],获取第5条记录

- 执行命令:
rec5.delete(),删除第5条记录

- 执行命令:
Member.objects.all().values(),查不到第5条记录了~

2.12 Django更新模型
2.12.1 模型里添加字段
- 修改
my_tennis_club/members/models.py文件

2.12.2 做数据库迁移
- 执行命令:
python manage.py makemigrations members

- 执行命令:
python manage.py migrate

2.12.3 进入Python交互环境
- 执行命令:
python manage.py shell

- 执行命令:
from members.models import Member

2.12.4 给空白字段插入数据
-
执行代码
member1 = Member.objects.all()[0] member1.phone = 15890901234 member1.joined_date = '2024-05-01' member1.save() member2 = Member.objects.all()[1] member2.phone = 13987654321 member2.joined_date = '2024-06-10' member2.save() member3 = Member.objects.all()[2] member3.phone = 13612345678 member3.joined_date = '2024-07-20' member3.save() member4 = Member.objects.all()[3] member4.phone = 15098765432 member4.joined_date = '2024-08-15' member4.save()

2.12.5 查看Member表全部记录
-
执行代码
for member in Member.objects.all().values(): ... print(member)
2.13 Django准备模板
2.13.1 创建会员模板页面
-
创建
my_tennis_club/members/templates/all_members.html文件

-
代码说明:该模板文件
all_members.html用于在网页中展示会员列表。通过 Django 模板语法{% for member in mymembers %}遍历传入的会员数据,并使用{{ member.firstname }}和{{ member.lastname }}输出姓名,生成无序列表。页面设置浅色背景,结构清晰,便于在视图中渲染动态内容。
2.13.2 修改视图
- 修改
my_tennis_club/members/views.py文件

2.13.3 启动服务器
- 执行命令:
python manage.py runserver

2.13.4 访问会员模板页面
- 访问
http://localhost:8000/members/

2.14 Django添加链接到详情页
2.14.1 创建详情页
- 创建
my_tennis_club/members/templates/details.html文件

2.14.2 修改会员模板页面
- 修改
my_tennis_club/members/templates/all_members.html文件

2.14.3 创建新视图
- 修改
my_tennis_club/members/views.py文件,添加视图函数details(request, id)

2.14.3 添加路由
- 修改
my_tennis_club/members/urls.py文件

2.14.4 启动服务器
- 执行命令:
python manage.py runserver

2.14.5 访问会员页面与详情页面
- 访问
http://localhost:8000/members/

- 单击【Black Smith】超链接,查看
Black Smith详情页

- 单击【Members】超链接,返回会员页面

3. 实战总结
- 本次实战全面覆盖 Django 开发的关键环节:从创建虚拟环境和项目结构,到定义 Member 模型并同步至 SQLite 数据库;通过 ORM 实现数据的插入、更新与删除;利用模板系统动态渲染会员列表,并添加超链接跳转至详情页。过程中掌握了 views、urls、templates 的协作机制,理解了 MTV(Model-Template-View)架构的实际应用。整个流程体现了 Django “快速开发、DRY 原则、组件解耦”的优势,为构建更复杂的 Web 应用奠定了坚实基础。
780

被折叠的 条评论
为什么被折叠?



