1. 项目背景与需求分析
中小学课后延时服务已成为当前教育领域的重要需求。随着"双减"政策的实施,学校需要提供更丰富的课后活动来满足学生发展需求。传统的手工管理方式面临诸多痛点:课程安排混乱、考勤统计效率低、家校沟通不畅、费用结算复杂等。
我在实际调研中发现,许多学校仍在使用Excel表格管理课后服务,经常出现以下典型问题:
- 课程报名信息通过微信群接龙,容易遗漏和重复
- 教师需要手工记录考勤,耗时且易出错
- 家长无法实时了解孩子参与情况
- 财务人员每月需要花费大量时间计算费用
这个系统正是为解决这些问题而设计。采用Django框架开发,主要基于以下考量:
- Django自带完善的后台管理系统,适合快速构建管理类应用
- 内置的ORM可以简化数据库操作,降低开发难度
- 成熟的权限系统能够满足多角色需求
- 丰富的第三方库支持各种扩展功能
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型与架构
系统采用经典的B/S架构,具体技术栈如下:
前端技术栈:
- Bootstrap 5:响应式布局,适配PC和移动端
- Vue.js:实现动态交互效果
- ECharts:数据可视化展示
后端技术栈:
- Django 4.0:核心框架
- Django REST Framework:构建API接口
- Django Channels:实现WebSocket实时通信(用于考勤提醒)
数据库:
- MySQL 8.0:主数据库
- Redis:缓存和消息队列
提示:选择MySQL而非SQLite是考虑到学校场景下数据量较大,且需要更好的并发性能。Redis的引入可以有效减轻数据库压力,特别是在高峰期。
2.2 数据库设计
数据库设计遵循三范式原则,核心表结构如下:
用户相关表:
python复制class User(AbstractUser):
USER_TYPE_CHOICES = (
(1, 'admin'),
(2, 'teacher'),
(3, 'parent'),
(4, 'student')
)
user_type = models.PositiveSmallIntegerField(choices=USER_TYPE_CHOICES)
phone = models.CharField(max_length=20)
class StudentProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
grade = models.CharField(max_length=20)
class_name = models.CharField(max_length=20)
parent = models.ForeignKey(User, related_name='children', on_delete=models.SET_NULL, null=True)
课程相关表:
pyt复制
