1. 项目概述
作为一个刚接触Django的新手,我最近花了三周时间完整走了一遍官方文档的投票应用教程。这个看似简单的项目实际上涵盖了Django开发的核心流程,从环境搭建到模型设计,再到视图编写和模板渲染,最后部署上线。在这个过程中,我记下了大量实操笔记,也踩过不少坑,现在把这些经验系统整理出来。
投票应用虽然基础,但它完美展示了Django的MTV架构(Model-Template-View)。通过这个项目,你不仅能学会如何用Django构建一个功能完整的Web应用,更重要的是理解Django的设计哲学和最佳实践。我建议所有Django初学者都从这个项目入手,因为它就像编程界的"Hello World"一样经典。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与项目创建
2.1 Python环境配置
首先确保你的Python版本在3.6以上。我强烈建议使用虚拟环境来隔离项目依赖:
bash复制python -m venv myenv
source myenv/bin/activate # Linux/Mac
myenv\Scripts\activate # Windows
注意:虚拟环境激活后,你的命令行提示符前会出现环境名称,这是判断是否激活成功的简单方法。
2.2 Django安装与验证
在虚拟环境中安装Django:
bash复制pip install django
安装完成后验证版本:
bash复制python -m django --version
我使用的是Django 4.1,但教程内容对3.2及以上版本都适用。如果遇到版本差异,可以查看Django的版本发布说明。
2.3 创建项目与应用
创建项目骨架:
bash复制django-admin startproject mysite
这会产生一个mysite目录,包含基本的项目结构。然后进入项目目录创建投票应用:
bash复制cd mysite
python manage.py startapp polls
关键目录结构说明:
mysite/settings.py:项目配置文件mysite/urls.py:URL路由入口polls/models.py:应用数据模型polls/views.py:视图逻辑
3. 数据模型设计
3.1 定义Question和Choice模型
在polls/models.py中定义我们的数据模型:
python复制from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
这里有几个关键点需要注意:
- 每个模型都是django.db.models.Model的子类
- 字段类型要选择合适的数据类型(CharField, DateTimeField等)
- ForeignKey定义了Question和Choice之间的一对多关系
__str__方法定义了对象的字符串表示形式
3.2 激活模型并迁移数据库
首先在settings.py的INSTALLED_APPS中添加'polls':
python复制INSTALLED_APPS = [
...
'polls.apps.PollsConfig',
]
然后生成并应用迁移:
bash复制pyt
