3.创建应用及创建Grade模型并配置后台

在上一章中,我们已经成功做了一件非常重要的事情: 让 Django 项目跑了起来。

但到目前为止,我们所拥有的,还只是一个“空壳项目”。
它能运行,却什么都做不了。它没有业务逻辑,也没有任何属于我们自己的功能。
从这一章开始,事情将发生真正的变化。
Django 项目本身,更像是一个“舞台”。而真正的功能,永远来自于 应用(App)。
在真实的 Web 系统中:
- 没有人会把所有代码写在一个文件里
- 不同的业务,必须被清晰地拆分和隔离
- 系统才能变得可维护、可扩展
这正是 Django 应用机制存在的意义。
准备好了吗?让我们开始构建属于自己的应用。
1.创建应用(App)
在 Django 中,应用(App)是功能的基本组织单位。
你可以把一个 Django 项目想象成一座大楼,而应用就是这座大楼里的一间间房间。每个房间各司其职,互不干扰,但最终共同组成一个完整系统。

在一个项目中:
- 可以包含多个应用
- 每个应用负责一类明确的业务功能
- 应用之间相互隔离,又可以相互协作

这正是 Django 能够很好地支撑中大型项目的原因之一。
在我们的 学生成绩管理系统 中,我们会把系统拆分为以下几个应用:
- Grades:班级管理
- Teachers:教师管理
- Students:学生管理
- Scores:成绩管理
- Accounts:用户与权限管理
这样的拆分方式非常贴近真实业务,也符合 Django 的设计理念。
使用命令创建应用
和创建项目一样,Django 也为我们提供了非常方便的命令来创建应用。
还记得之前提到过的这条命令吗?
django-admin --help
Django 把所有常用操作都封装成了命令,而创建应用的命令叫做:
python manage.py startapp 应用名称
app 是 application 的缩写,startapp 的含义也非常直观:
开始一个新的应用。
一次性创建多个应用
现在,我们为学生成绩系统一次性创建 5 个应用。可以在终端中执行:
python manage.py startapp grades
python manage.py startapp teachers
python manage.py startapp students
python manage.py startapp scores
python manage.py startapp accounts
如下图。

执行完成后,你会发现项目目录中多出了 5 个新的文件夹。如下图。

这些文件夹的结构几乎一模一样,这是 Django 帮你生成的应用标准骨架。
这也是使用命令行的最大好处之一:
一行命令,生成一套规范的目录结构,避免手动创建带来的混乱。
2.将应用注册到项目中
创建应用之后,还差最后一步: 告诉 Django,这些应用需要被加载。
打开 settings.py 文件,找到 INSTALLED_APPS,将我们刚刚创建的应用添加进去:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 新增代码
'grades',
'teachers',
'students',
'scores',
'accounts',
]
只有出现在 INSTALLED_APPS 中的应用,Django 才会:
- 加载它的模型
- 识别它的迁移文件
- 注册它的后台管理功能
注意:这一步非常关键,请务必确认没有拼写错误。
3.创建模型
应用只是一个“容器”,真正用来描述业务数据的,是 模型(Model)。
我们从最简单、也最基础的一个开始:班级(Grade)。
设计 Grade 模型
在学生成绩系统中,班级至少需要包含以下信息:
- grade_number:班号
- 字符串类型
- 长度 10
- 唯一
- grade_name:班级名称
- 字符串类型
- 长度 120
- 唯一
编写 Grade 模型代码
打开 grades/models.py,先写下最基础的模型结构:
from django.db import models
# Create your models here.
# Grade 模型用于表示“班级”信息,存储班级的名称和编号
class Grade(models.Model):
# 班级名称:字符字段,最大长度50个字符,必须唯一,不能重复
# verbose_name 用于在 Django Admin 后台显示的字段标签
grade_name = models.CharField(
max_length=50,
unique=True,
verbose_name='班级名称'
)
# 班级编号:字符字段,最大长度10个字符,必须唯一,不能重复
# 通常用于存放如 “2023级1班” 的编号或简码
grade_number = models.CharField(
max_length=10,
unique=True,
verbose_name='班级编号'
)
# 定义对象的字符串表示形式,在 Admin 后台或打印对象时显示班级名称
def __str__(self):
return self.grade_name
# Meta 类用于配置模型的元数据
class Meta:
# 指定数据库中对应的表名(默认为 appname_gradename,这里手动指定为 grade)
db_table = 'grade'
# 在 Django Admin 后台单数形式的显示名称
verbose_name = '班级'
# 在 Django Admin 后台复数形式的显示名称(这里设置为“班级名称”以更清晰)
verbose_name_plural = '班级名称'
暂时不用急着把字段一次性写全,我们会逐步完善它。 先让模型存在,是学习 Django 的一个重要节奏。
4.数据库迁移(Migration)
模型只是 Python 代码,真正的数据库表,需要通过迁移来生成。
生成迁移文件
python manage.py makemigrations
这一步会告诉 Django:
“我的模型发生了变化,请帮我记录这些变化。”
执行迁移操作
python manage.py migrate
这一步才是真正对数据库进行操作,创建对应的数据表。
数据库可视化软件
Django默认使用的sqlite数据库,为了更方便地查看数据,我们先安装一个数据库可视化软件——navicat premium lite。
下载网址如下:
https://www.navicat.com.cn/download/navicat-premium-lite
选择对应的系统进行下载,如下图。

下载完成后,一路傻瓜安装即可。
接下来我们就可以使用navicat-premium-lite打开sqlite数据库了。如下图。



发现数据库中已经多了一张 grade 表(其余表是Django自带的),如下图。

表中字段就是我们在模型中创建的2个属性:grade_name和grade_number。此外还有一个id字段,它是主键,每张表都一个唯一的主键,用于区分每一个记录。Django默认使用id字段作为主键,并且是自增的。如下:

5.注册后台管理(Admin)
Django 最大的一个特色就是自带一个非常强大的后台管理系统。只需要少量配置,就可以直接对数据库进行增删改查。接下来我们就来体验一下它的强大。
注册 Grade 模型
打开 grades/admin.py,添加如下代码:
from django.contrib import admin
from .models import Grade
admin.site.register(Grade)
这行代码的意思是:
“请在后台管理系统中,显示 Grade 这个模型。”
6.创建管理员账号
在访问后台之前,我们需要创建一个管理员账户:
python manage.py createsuperuser
按照提示输入用户名、邮箱和密码即可。如下图

7.登录后台查看效果
启动开发服务器:
python manage.py runserver
在浏览器中访问:
http://127.0.0.1:8000/admin/
使用刚刚创建的管理员账号登录,

你应该能看到 Grade(班级)管理界面。如下图:

这一刻非常重要。
你已经完成了:
- 应用的创建
- 模型的定义
- 数据表的生成
- 后台系统的接入
一个最小但完整的 Django 数据流,已经跑通了。
小伙们可以愉快地玩耍了,尝试对班级进行增删改查操作。
本节小结
在这一节中,你完成了 Django 开发中极其关键的一步:
- 学会了如何拆分应用
- 使用命令创建应用骨架
- 定义并迁移模型
- 通过后台系统管理数据
接下来,我们将继续完善模型之间的关系,并逐步构建完整的学生成绩管理系统。
真正的系统开发,从这里开始变得有“形状”了。
【大熊课堂精品课程】
Python零基础入门动画课: https://www.bilibili.com/cheese/play/ss7988
Django+Vue:全栈开发: https://www.bilibili.com/cheese/play/ss8134
PyQT6开发桌面软件: https://www.bilibili.com/cheese/play/ss12314
Python办公自动化: https://www.bilibili.com/cheese/play/ss14990
Cursor AI编程+MCP:零基础实战项目课: https://www.bilibili.com/cheese/play/ss105194189
Pandas数据分析实战: https://www.bilibili.com/cheese/play/ss734522035
AI大模型+Python小白应用实战: https://www.bilibili.com/cheese/play/ss3844