Django项目之学生体温填报管理系统
提示:
前言
提示:
提示:以下是本篇文章正文内容,下面案例可供参考
一、项目介绍
1.1 项目内容
基于Django框架搭建学生体温填报管理信息系统,方便学生每天上报个人的体温数据,方便学校管理部门及时了解学生体温情况
1.2 开发环境
①Python 3.9
② pycharm-community-2021.2.1
③ Django 3.2.9
二、项目需求
2.1 管理员模块
2.1.1 登录
①实现管理员的登录功能
2.1.2 基本设置
① 用户管理:对用户信息进行增、删、改、查
② 部门管理:对学校部门信息进行增、删、改、查
③ 班级管理:对班级信息进行增、删、改、查
④ 学生管理:对学生信息进行增、删、改、查,可以将学生信息导出为Excel文件
2.1.3 统计报表
① 全体体温记录:管理员可以查看学生的体温数据;若学生体温大于37.5℃,则在体温记录表中标明为红色,反之,标明为绿色;可以将学生体温数据导出为Excel文件
② 体温异常人员名单:将学生体温大于37.5℃的体温数据显示在‘体温异常人员名单’页面,管理员可以将‘体温异常人员名单’导出为Excel文件
2.2 学生模块
2.2.1 登录
① 实现学生的登录功能
2.2.2 基本设置
① 个人信息:显示登录学生的信息在‘个人信息’页面,登录学生可以对个人信息进行修改
2.2.3 体温管理
① 体温填报:学生每天登录系统填写体温信息
② 历史记录:可以查询、修改所有体温数据
2.3 其他
① 首页:页面右上角显示登录用户的用户名
② 退出登录:用户退出个人管理页面,返回到登录页面
③ 分页:将信息进行分页展示
三、项目数据库设计
3.1 数据库目录结构
3.2 管理员表 t_admin
3.3 班级表 t_classes
3.4 部门表 t_department
3.5 学生表 t_student
3.6 体温表 t_temperature
四、项目框架搭建
4.1 项目目录结构
4.2 settings文件
4.2.1 配置MySQL数据库连接信息
在django_learn3\mysite\mysite_init_.py添加
4.2.2 静态资源配置
4.2.3 设置语言和时区
4.2.4 设置静态主页html文件保存目录
4.3 定义模型models.py
4.4 配置URLs 路由
4.4.1 总路由 mysite/urls.py
4.4.2 子路由 polls.urls.py
五、设计实现的难点和亮点
5.1 难点
5.1.1 使用PyCharm社区版搭建Django项目
PyCharm开源社区版不像商业版那样可以直接通过Django来创建项目,Pycharm社区版需要进行初始化设置,需要用一些自动生成的代码配置一个 Django project —— 即一个 Django 项目实例需要的设置项集合,包括数据库配置、Django 配置和应用程序配置。还要避免使用 Python 或 Django 的内部保留字来命名项目。
5.1.2 前后端交互
5.1.3 Django 处理请求
当一个用户请求Django 站点的一个页面,Django 确定使用根 URLconf 模块。通常,这是 ROOT_URLCONF 设置的值,但如果传入 HttpRequest 对象拥有 urlconf 属性(通过中间件设置),它的值将被用来代替 ROOT_URLCONF 设置。Django 加载该 Python 模块并寻找可用的 urlpatterns 。Django 依次匹配每个URL 模式,在与请求的URL 匹配的第一个模式停下来。一旦有 URL 匹配成功,Djagno 导入并调用相关的视图,这个视图是一个简单的 Python 函数。如果没有 URL 被匹配,或者匹配过程中出现了异常,Django 会调用一个适当的错误处理视图。
5.2 亮点
① 利用前后端交互实现分页功能
② 设置权限,根据不同用户登录系统,跳转到不同页面
③ 根据不同体温数据,前端数据列表体温数据显示不同颜色
④ 通过过滤器检索指定对象
⑤ 可以将学生名单、体温数据信息、体温异常人员名单等导出为Excel文件
六、系统关键截图
七、系统关键代码
# 管理员登录
def admin_login(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
if not all([username, password]):
context = {
'message': '账号或密码不能为空!'
}
return render(request, 'login.html', context)
else:
checkAdmin = AdminInfo.objects.filter(username=username, password=password)
if len(checkAdmin):
# 将用户的信息存放到session中,session在中间件中是默认启用的
request.session['loginSession'] = {
'id': checkAdmin[0].id,
'username': username,
'password': password
}
context = {
'status': username,
'message': '已登录',
'length': 1
}
return render(request, 'admin_index.html', context)
else:
context <