当前位置: 首页 > news >正文

Django实战项目-学习任务系统-任务完成率统计

接着上期代码内容,继续完善优化系统功能。

本次增加任务完成率统计功能,为更好的了解哪些任务完成率高,哪些任务完成率低。

该功能完成后,学习任务系统1.0版本就基本完成了。

1,编辑urls配置文件:
./mysite/study_system/urls.py

path('task/getClassTaskList/', views.getClassTaskList, name='getClassTaskList'),

2,编辑视图文件:
./mysite/study_system/views.py

def getClassTaskList(request):'''@方法名称: 获取任务完成率统计@作    者: PandaCode辉@weixin公众号: PandaCode辉@创建时间: 2023-10-10'''# 响应容器rsp_dict = {}# 获取当前用户名username = request.session.get('username')# 根据用户名获取用户对象cur_user = StudyUser.objects.get(username=username)print('根据用户名查询用户对象:' + str(cur_user))user_list = [cur_user]# 如果当前用户是:3-学生,则查找对应辅导员用户if cur_user.role == 3:parent_id = cur_user.parent_id# 根据用户ID获取用户对象parent_user = StudyUser.objects.get(user_id=parent_id)print('根据用户ID获取用户对象:' + str(parent_user))user_list = [cur_user, parent_user]# 限制发布人:系统和辅导员data_set = StudyTask.objects.filter(created_by__in=user_list)# 得到所有 任务名称和状态 的查询集合 QuerySetdata_list = data_set.values('task_title').annotate(all_cnt=Count('task_title')).order_by('-all_cnt')data_set_list = data_set.values('task_title', "task_status").annotate(cnt=Count('task_title'))# 循环处理分类统计数据for data in data_list:task_title = data['task_title']data['un_finish'] = 0data['finish'] = 0data['delete'] = 0for data_set in data_set_list:if task_title == data_set['task_title']:# 待完成数量if data_set['task_status'] == 0:data['un_finish'] = data_set['cnt']elif data_set['task_status'] == 1:# 已完成数量data['finish'] = data_set['cnt']else:# 已作废数量data['delete'] = data_set['cnt']# 循环处理分类统计数据for data in data_list:all_cnt = data['all_cnt']finish = data['finish']# 计算完成率,保留2位小数,并转成百分比格式data['finish_rate'] = str(format(float(finish) / float(all_cnt) * 100, '.2f')) + "%"# 查询返回任务列表rsp_dict['data_list'] = data_listcontext_object_name = "class_task_list"template_name = "study_system/home.html"# 'html_file': 'xxx.html' 动态指定模板页面 ; 'menuTo': 'task' = 任务管理 ;rsp_dict['html_file'] = 'study_system/task/classTaskList.html'rsp_dict['menuTask'] = 'menuTask'rsp_dict['context_object_name'] = context_object_namereturn render(request, template_name, rsp_dict)

3,编辑页面模板代码:

3.1. 任务完成率统计页面
./mysite/study_system/templates/study_system/task/classTaskList.html

<style type="text/css">table tr td {font-size: 1.5em;}
</style>
<!-- 结果显示区 -->
<div align="center"><table style='width: 100%;'><tr><td colspan="6" align="center">任务完成率统计</td></tr><tr style="font-weight: bold; background: #FFEC8B;text-align: center"><td>序号</td><td>任务标题</td><td>任务发布总次数</td><td>待完成任务数</td><td>已完成任务数</td><td>任务完成率</td></tr>{% if data_list %}{% for data in data_list %}<tr style="color: red;text-align: center">{# forloop.counter 可以记录循环的次数,作为列表序号#}<td>{{ forloop.counter }}</td><td>{{ data.task_title }}</td><td>{{ data.all_cnt }}</td><td>{{ data.un_finish }}</td><td>{{ data.finish }}</td><td>{{ data.finish_rate }}</td></tr>{% endfor %}{% else %}<tr><td colspan="6" id="con_title">查无记录</td></tr>{% endif %}</table>
</div>

4,运行测试-任务完成率统计:

  -------------------------------------------------end -------------------------------------------------

http://www.lryc.cn/news/232406.html

相关文章:

  • 安卓调用手机邮箱应用发送邮件
  • Vue-Pinia
  • C语言,编写程序输出半径为1到15的圆的面积,若面积在30到100之间则予以输出,否则,不予输出
  • Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感
  • 对数据库密码使用MD5加密算法加密,并进行登录验证
  • 关于Chrome中F12调试Console输入多行
  • C# 集合用法介绍
  • linux三次握手、四次挥手
  • C# 泛型介绍
  • Windows如何正确设置PHP环境变量以在Git Bash中运行命令
  • [代码实战和详解]VGG16
  • x3daudio1_7.dll错误:解决方法和丢失原因及作用
  • pipeline + node +jenkins+kubernetes部署yarn前端项目
  • 计算机网络中的面向连接与无连接
  • EventEmitter3在vue中的使用
  • 双剑合璧:基于Elasticsearch的两路召回语义检索系统,实现关键字与语义的高效精准匹配
  • LeetCode34-34. 在排序数组中查找元素的第一个和最后一个位置
  • ddrnet 分割学习笔记
  • Outlook关闭过去事件的提醒
  • git 简单入门
  • 只有开源才能拯救AI
  • 在Spring Boot中使用进程内缓存和Cache注解
  • YOLOv5项目实战(3)— 如何批量命名数据集中的图片
  • React + hooks + Ts 实现将后端响应的文件流(如Pdf)输出到浏览器下载
  • 大数据基础设施搭建 - JDK
  • 从0到0.01入门React | 010.精选 React 面试题
  • Docker启动SRS流媒体服务器
  • php+MySQL防止sql注入
  • git 删除远程非主分支
  • 【MySQL学习】C++外部调用