请假审批系统-Python Flask MySQL
项目描述
面向校园场景的轻量级请假审批系统:学生凭「姓名 + 学号」白名单登录提交请假,教师凭统一后台密码审批。基于 Flask + MySQL + Tailwind CSS,单文件后端,开箱即部署。
http://127.0.0.1:5001
教师 123456
学生 蒋文恺 202405010106
功能描述
– 白名单式学生登录 — 学生仅需姓名 + 学号,系统在 `users` 表中按 `role=’student’` 精确匹配姓名与学号;不在名单中的人无法登录,避免任意注册带来的脏数据。
– 统一密码的教师后台 — 教师凭 `TEACHER_PASSWORD` 进入审批台,无需逐个建号,契合「单一审批人」的小规模场景,部署成本最低。
– 完整审批闭环 — 请假状态在 `待审批 / 已通过 / 已驳回` 间流转,审批时可附审批意见,学生端实时可见处理结果与审批人。
– 并发安全的审批 — 审批 `UPDATE` 带 `WHERE id = %s AND status=’待审批’` 条件并校验 `rowcount`,两名教师同时操作同一申请时只有一次生效,杜绝重复审批。
– 前后端双重校验 — 请假类型、事由非空、日期合法性(含结束不早于开始)在前端 JS 与后端 Python 各校验一遍,前端保体验、后端保安全(不可被绕过)。
– SQL 注入防护 — 所有数据库查询统一使用 `%s` 占位符参数化,杜绝字符串拼接型注入。
– 基于 session 的鉴权 — 通过 `login_required(role=…)` 装饰器统一拦截,且每次请求都回查数据库确认用户仍存在,防止陈旧 session 越权访问。
– 响应式 UI — Tailwind CSS(CDN 引入)实现暖色大地系界面,桌面端表格、移动端卡片自适应。
– 容器化与健康检查就绪 — 提供 `Dockerfile` / `docker-compose.yaml`,内置 `/health` 端点供 Coolify、负载均衡器探活。
运行环境
开发环境 pycharm
运行环境 flask+mysql+python3.8
项目技术
Web 框架 Flask 3.x
数据库 MySQL 8.0
数据库驱动 PyMySQL
模板引擎 Jinja2
前端样式 Tailwind CSS 3.x
以上系统源码经过技术整理与调试,确保能正常运行


