Skip to main content

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

image-20251229201321244

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

image-20251224143742539

但到目前为止,我们所拥有的,还只是一个“空壳项目”。

它能运行,却什么都做不了。它没有业务逻辑,也没有任何属于我们自己的功能。

从这一章开始,事情将发生真正的变化。

Django 项目本身,更像是一个“舞台”。而真正的功能,永远来自于 应用(App)

在真实的 Web 系统中:

  • 没有人会把所有代码写在一个文件里
  • 不同的业务,必须被清晰地拆分和隔离
  • 系统才能变得可维护、可扩展

这正是 Django 应用机制存在的意义。

准备好了吗?让我们开始构建属于自己的应用。

1.创建应用(App)

在 Django 中,应用(App)是功能的基本组织单位

你可以把一个 Django 项目想象成一座大楼,而应用就是这座大楼里的一间间房间。每个房间各司其职,互不干扰,但最终共同组成一个完整系统。

image-20251229194708028

在一个项目中:

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

image-20251229165801255

这正是 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

如下图。

image-20251229170222557

执行完成后,你会发现项目目录中多出了 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

选择对应的系统进行下载,如下图。

image-20251229200428667

下载完成后,一路傻瓜安装即可。

接下来我们就可以使用navicat-premium-lite打开sqlite数据库了。如下图。

image-20251229200614540

image-20251229200931879

image-20251229200830963

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

image-20251229195923794

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

image-20251229195648922

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

按照提示输入用户名、邮箱和密码即可。如下图

image-20251230171730153

7.登录后台查看效果

启动开发服务器:

python manage.py runserver

在浏览器中访问:

http://127.0.0.1:8000/admin/

使用刚刚创建的管理员账号登录,

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

这一刻非常重要。

你已经完成了:

  • 应用的创建
  • 模型的定义
  • 数据表的生成
  • 后台系统的接入

一个最小但完整的 Django 数据流,已经跑通了。

小伙们可以愉快地玩耍了,尝试对班级进行增删改查操作。

本节小结

在这一节中,你完成了 Django 开发中极其关键的一步:

  • 学会了如何拆分应用
  • 使用命令创建应用骨架
  • 定义并迁移模型
  • 通过后台系统管理数据

接下来,我们将继续完善模型之间的关系,并逐步构建完整的学生成绩管理系统。

真正的系统开发,从这里开始变得有“形状”了。