本系列将指导您如何使用django框架搭建一个学生成绩管理网站。今天我们将聚焦于创建一个独立的项目应用,主要功能包括学习成绩查询和数据统计分析。我们将使用datatables和echarts作为前端模块。让我们从数据库创建开始讲起。
Part 1:功能描述
整个项目将包含两个网页:
- 第一个网页:展示一张表格,允许查看所有学生在不同模拟考试中各科目的成绩。
- 第二个网页:提供单个学生的成绩折线图查询、不同科目成绩的盒形图分布以及成绩排名柱状图。未来可能会增加更多功能。
Part 2:数据库设计
我们将设计两张表:
- 第一张表用于存放常数项,例如班级、学生姓名、模拟考代号和科目。
- 第二张表记录每个学生的成绩,包括班级、学生姓名、模拟考信息、科目和成绩。我们假设同一个班级内没有重名的学生。
Part 3:models
代码语言:Python 运行次数:0 运行 复制
from django.db import models
class Constants(models.Model):
class_name = models.CharField(blank=True, null=True, max_length=10, verbose_name='班级')
student_name = models.CharField(blank=True, null=True, max_length=10, verbose_name='学生姓名')
exam_info = models.CharField(blank=True, null=True, max_length=20, verbose_name='模拟考信息')
course_name = models.CharField(blank=True, null=True, max_length=20, verbose_name='科目')
class Meta:
db_table = 'grades_constants'
verbose_name = "常数项"
verbose_name_plural = verbose_name
class StudentGrades(models.Model):
class_name = models.CharField(blank=True, null=True, max_length=10, verbose_name='班级')
student_name = models.CharField(null=False, default='', max_length=10, verbose_name='学生姓名')
exam_info = models.CharField(blank=True, null=True, max_length=20, verbose_name='模拟考信息')
course_name = models.CharField(blank=True, null=True, max_length=20, verbose_name='科目')
grades = models.FloatField(blank=False, null=False, default=0.0, verbose_name="学习成绩")
class Meta:
unique_together = ('class_name', 'student_name', 'exam_info', 'course_name')
db_table = 'grades_record'
verbose_name = "学习成绩记录"
verbose_name_plural = verbose_name代码截图

models.py:这是编写创建数据库对应代码的地方。

欢迎使用ChuangxinCMS企业网站管理系统软件! ChuangxinCMS是一个采用PHP技术和MYSQL数据库开发的企业网站管理系统,使用ChuangxinCMS能在最短的时间内花费最少的成本来搭建一个功能完善的企业网站,ChuangxinCMS具有一系列完善的内容管理功能,包括文章发布、分类管理、产品发布展示、下载模块等,整个系统页面设计简洁大方,功能实用高效,是中小型企业建站的最佳选择
Part 4:ORM介绍
在过去的工作中,我们可能通过数据库操作软件或SQL语句来创建工作表。在Django项目中,我们通过在models中创建类,然后使用migrate命令来创建对应的数据库。
python manage.py makemigrations python manage.py migrate
Django采用的是
Object-relational mapper(ORM)方法,将传统的SQL语句操作转换为对类的操作。简单来说,一个类对应一张表,通过CharField、FloatField等类来创建对应的字段,不同的数据类型有不同的类与之对应。Meta类定义了表名(db_table),并创建了联合约束(unique_together),确保不同记录的四个字段(class_name, student_name, exam_info, course_name)不能完全相同。
makemigrations

migrate










