Django 6.0 投票应用实战开发(二):数据库模型、后台管理与投票应用
一、前言
在教程 01 中,我们完成了 Django 项目和 polls 应用的创建,以及基础视图的编写。教程 02 的核心是通过 Django ORM(对象关系映射)定义数据库模型、完成数据表创建,并使用 Django 自带的后台管理系统管理数据。本文会详细拆解教程 02 的每一步操作,同时补充「将代码提交到 GitCode 仓库」的完整流程,适配课程作业交付场景。
二、先执行数据库初始化(必做)
在你的 djangotutorial 目录(有 manage.py 的目录)CMD 里敲:
py manage.py migrate
作用:创建 Django 自带的用户、admin 等表。
三、编辑 polls/models.py(复制下面代码)
打开 polls/models.py,全部替换成这段:
from django.db import models
from django.utils import timezone
import datetime
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField("date published")
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
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

四、把 polls 应用加入项目配置
打开 mysite/settings.py,找到 INSTALLED_APPS,第一行加这个:
INSTALLED_APPS = [
'polls.apps.PollsConfig', # 加这行
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

五、生成数据库迁移文件
CMD 里敲:
py manage.py makemigrations polls
出现:Migrations for 'polls': polls/migrations/0001_initial.py 就是成功。
六、把模型真正建进数据库
py manage.py migrate
出现 Applying polls.0001_initial... OK 成功。
1.查看迁移对应的 SQL(可选)
若想验证 Django 生成的 SQL 语句,执行以下命令(无需实际执行 SQL,仅用于查看):
通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移。
迁移是 Django 对于模型定义(也就是你的数据库结构)的变化的储存形式 - 它们其实也只是一些你磁盘上的文件。如果你想的话,你可以阅读一下你模型的迁移数据,它被储存在 polls/migrations/0001_initial.py 里。别担心,你不需要每次都阅读迁移文件,但是它们被设计成人类可读的形式,这是为了便于你手动调整 Django 的修改方式。
Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 - 这个命令是 migrate,我们马上就会接触它 - 但是首先,让我们看看迁移命令会执行哪些 SQL 语句。sqlmigrate 命令接收一个迁移的名称,然后返回对应的 SQL:
python manage.py sqlmigrate polls 0001
你将会看到类似下面这样的输出:

2. 执行迁移,创建数据库表
这一步会将迁移文件的操作真正应用到数据库,创建对应的数据表:
py manage.py migrate
关键成功标识:输出中出现 Applying polls.0001_initial... OK,表示 polls 应用的表创建完成。
七、Django管理页面
1、创建超级管理员用户
python manage.py createsuperuser
按提示输入:
-
Username:
admin -
Email: 直接按回车跳过
-
Password:
admin123(输入时不显示) -
Password (again):
admin123

看到 Superuser created successfully. 就成功了。
八、向管理页面中加入投票应用
1. 打开 polls/admin.py
在VS Code左侧文件列表中:
-
展开
polls文件夹 -
点击
admin.py
2. 修改文件内容
删除所有内容,粘贴:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
按 Ctrl+S 保存

九、启动开发服务器
在VS Code终端中:
python manage.py runserver

十、在浏览器中测试
1. 访问管理后台
打开浏览器,访问:http://127.0.0.1:8000/admin/
-
用户名:
admin -
密码:
admin123 -
登录后应该能看到 Questions 链接


2. 体验便捷的管理功能并添加一些数据
-
点击 Questions → 右上角 ADD QUESTION
-
输入问题文本,如:"What's up?"
-
设置发布日期(默认就是现在)
-
点击 SAVE

页面的底部提供了几个选项:
保存(Save): 保存改变,然后返回对象列表。
保存并继续编辑(Save and continue editing):保存改变,然后重新载入当前对象的修改界面。
保存并新增(Save and add another):保存改变,然后添加一个新的空对象并载入修改界面。
删除(Delete):显示一个确认删除页面。
通过点击 “今天(Today)” 和 “现在(Now)” 按钮改变 “发布日期(Date Published)”。然后点击 “保存并继续编辑(Save and add another)”按钮。然后点击右上角的 “历史(History)”按钮。会看到一个列出了所有通过 Django 管理页面对当前对象进行的改变的页面,其中列出了时间戳和进行修改操作的用户名:

3. 访问投票页面
http://127.0.0.1:8000/polls/
应该还是显示之前的 "Hello, world..."(后面教程会改)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)