0
点赞
收藏
分享

微信扫一扫

Django项目之学生体温填报管理系统

蓝哆啦呀 2022-03-26 阅读 73

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 = {
                    'message': '账号或密码错误'
                }
                return render(request, 'login.html', context)
    else:
        context = {
            'status': '未登录状态',
            'length': 0
        }
        return render(request, 'login.html', context)
# 添加用户
def admin_add_submit(request):
    # 拿到前端form表单的值,要通过post方法
    if request.method == 'POST':
        # 开始取到前端操作的值
        addAdmin = AdminInfo()
        # 括号内部是form表单内每一个字段的name
        addAdmin.username = request.POST.get("username")
        addAdmin.password = request.POST.get("password")

        # 保存到数据库
        addAdmin.save()
        print("添加的值为:username = ", addAdmin.username + ", password = " + addAdmin.password)
        # 添加成功:重定向到admin_list.html
        return redirect("/myapp/admin_list")
    # 添加失败:返回admin_add.html
    print("添加失败")
    return render(request, "admin_add.html")
# 查询全部,列表显示
def admin_list(request):
    # 数据库取值用是get方法
    if request.method == 'GET':
        # 数据库的字段信息数据
        adminList = AdminInfo.objects.all().values('id', 'username', 'password')
        page = request.GET.get('page')
        # 实例化pagination对象
        pagination = Pagination(page, adminList.count(), request, per_page_num=5)
        adminList = adminList[pagination.start:pagination.end]
        context = {
            'all': adminList,
            'page_html': pagination.show_html()
        }
        # 渲染到admin_list.html界面
        return render(request, 'admin_list.html', context)
# 删除用户
def admin_delete(request):
    id = request.GET.get('id')
    AdminInfo.objects.filter(id=id).delete()
    return redirect("/myapp/admin_list")
<body>
	<form  action="" id="listform" method="get">
		<div class="panel admin-panel">
			<div class="panel-head">
				<strong class="icon-reorder"> 用户信息列表</strong>
			</div>
			<div class="padding border-bottom">
				<ul class="search" style="padding-left: 10px;">
					<li>
						<a class="button border-main icon-plus-square-o" href="{% url 'polls:admin_add' %}"> 添加用户</a>
					</li>
				</ul>
			</div>

			<table class="table table-hover text-center">
				<thead>
					<tr>
						<th width="100">编号</th>
						<th>用户名</th>
						<th>密码</th>
						<th width="20%">操作</th>
					</tr>
				</thead>
				<tbody>
					{% for i in all %}
					<tr>
						<td><p>{{ i.id }}</p></td>
						<td><p>{{ i.username }}</p></td>
						<td><p>{{ i.password }}</p></td>
						<td>
							<div class="button-group">
								<a class="button border-main" href="/myapp/admin_edit?id={{ i.id }}">
									<span class="icon-edit"></span> 修改
								</a>
								<a class="button border-red" href="/myapp/admin_delete?id={{ i.id }}">
									<span class="icon-trash-o"></span>删除
								</a>
							</div>
						</td>
					</tr>
					{% endfor %}
				</tbody>
			</table>
		</div>
	</form>
	<br><br>
	<nav aria-label="Page navigation" class="pull-right" style="text-align:center;">
    <ul class="pagination">
        {{ page_html|safe }}
     </ul>
	</nav>
	<script type="text/javascript">

	</script>
</body>
<body>
	<div class="panel admin-panel">
		<div class="panel-head" id="add">
			<strong><span class="icon-pencil-square-o"></span>增加用户</strong>
		</div>
		<div class="body-content">
			<form class="form-x" action="{% url 'polls:admin_add_submit' %}" method="post">
                <div class="form-group">
					<div class="label">
						<label>用户名:</label>
					</div>
					<div class="field">
						<input type="text" class="input w50" name="username" placeholder="请输入用户名" data-validate="required:请输入用户名"/>
						<div class="tips"></div>
					</div>
				</div>
                <div class="form-group">
					<div class="label">
						<label>密码:</label>
					</div>
					<div class="field">
						<input type="text" class="input w50" name="password" placeholder="请输入密码" data-validate="required:请输入密码"/>
						<div class="tips"></div>
					</div>
				</div>
				<div class="form-group">
					<div class="label">
						<label></label>
					</div>
					<div class="field">
						<button class="button bg-main" style="padding:10px 30px;" type="submit">
							添加
						</button>
						<button class="button bg-main icon-check-square-o" type="reset">
							重置
						</button>
					</div>
				</div>
			</form>
		</div>
	</div>

</body>
举报

相关推荐

0 条评论