Skip to content

Kevin-K22/django-poll-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django 6.0 官方投票应用教程(part 1-8)完整学习记录

该项目是按照 (https://docs.djangoproject.com/zh-hans/6.0/intro/tutorial01/) 一步步完成的。 每个教程节点都做了独立的 Git 提交,保留了完整的学习过程。

✨ 技术栈

  • Python 3.12
  • Django 6.0
  • MySQL 8.0
  • Git + GitHub

🚀 如何运行本项目

# 1. 克隆仓库
git clone https://github.com/Kevin-K22/django-poll-tutorial.git
cd django-poll-tutorial

# 2. 创建并激活虚拟环境(Windows示例)
python -m venv myenv
myenv\Scripts\activate
# 若使用Anaconda
conda create -n myenv python=3.12
conda activate myenv

# 3. 安装 Django 6.0
pip install django==6.0

# 4. 生成迁移文件
python manage.py makemigrations

# 5. 数据库迁移
python manage.py migrate

# 6. 创建管理员账号(可选,用于访问后台)
python manage.py createsuperuser

# 7. 运行开发服务器
python manage.py runserver

访问**http://127.0.0.1:8000/polls**即可查看投票应用首页 后台管理地址:http://127.0.0.1:8000/admin

📌 教程节点以及对应完整 Git 提交记录

Part 1

  • 初始化Django项目并验证runserver成功

  • 创建polls应用编写第一个视图并成功运行

Part 2

  • 调整setting中的时区以及更改数据库配置为MySQL

  • 添加Question和Choice模型并成功迁移

  • 为Question和Choice模型添加了str方法,以及为Question模型添加了was_published_recently方法

  • 在admin后台管理中注册模型Question

Part 3

  • 在polls/views.py中简单添加detail, results, vote视图并添加对应url路径

  • 改写之前的index视图并创建index.html模板,实现模板渲染

  • 实现detail视图以及处理404异常,添加detail.html模板

  • 使用{% url %}标签改写index.html中的硬编码URL

Part 4

  • 更新detail.html模板,编写为一个简单的表单,实现vote视图,处理表单POST请求

  • 实现results视图,编写results.html显示投票结果

  • 用通用视图重构index/detail/results视图并修改对应URLconf

Part 5

  • 为Question模型中的was_published_recently方法编写测试用例发现bug后并修正该方法

  • 为was_published_recently方法添加两个新测试用例以提供更全面的测试

  • 改善IndexView视图的get_queryset方法

  • 在测试代码中添加创建投票问题函数并为IndexView视图创建测试用例,主要测试新get_queryset方法

  • 为DetailView创建get_queryset方法进行约束,防止用户通过url访问到尚未发布的问题,并创建了对应的测试用例

Part 6

  • 为应用添加了自定义界面和风格

Part 7

  • 自定义Question后台表单布局

  • 为Question后台添加列表显示、过滤器和搜索框

  • 自定义后台工程模板

Part 8

  • 安装Django Debug Toolbar并完成相关配置

📁 项目结构

djangotutorial/
├── mysite/               # 项目配置目录
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── polls/                   # 投票应用
│   ├── migrations/          # 数据库迁移文件
│   ├── static/polls/        # 静态文件(style.css)
│   ├── templates/polls/     # 模板文件(index.html, detail.html, results.html)
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── templates/admin          # 后台模板文件(base_site.html)
├── manage.py
├── requirements.txt
└── README.md

📝 学习收获

通过完成本教程,我学习并熟悉了:

  • Django MVT 设计模式

  • 模型定义、数据库迁移 (makemigrations / migrate)

  • 视图函数编写

  • 模板语法、模板继承与静态文件管理

  • 表单处理、重定向与 URL 反向解析

  • 基础测试编写(TestCase)

  • Admin 后台定制化

  • Git 规范提交与 GitHub 远程托管

About

Django 6.0 官方投票教程 - 完整学习轨迹

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors