Django实战项目-学习任务系统-定时任务管理
接着上期代码框架,开发第4个功能,定时任务管理,再增加一个学习定时任务表,主要用来设置周期重复性的学习任务,定时周期,定时时间,任务标题和内容,预计完成天数,奖励积分和任务状态等信息。
现实中学习一门课程或一项技能知识,需要很长时间的学习积累才能学会,不像小说世界,游戏世界等虚拟世界,可以快速学会一项技能知识。
所以学习任务系统最重要的是周期重复性的学习任务,最好是每天做一次的任务,一点一点的累积,坚持几个月或几年,才能完成掌握一门课程或一项技能知识。
第一步:编写第4个功能-定时任务管理
1,编辑模型文件:
./mysite/study_system/models.py:
# 更多代码内容请关注weixin公众号: PandaCode辉
2,编辑urls配置文件:
./mysite/study_system/urls.py
# 更多代码内容请关注weixin公众号: PandaCode辉
3,编辑视图文件:
./mysite/study_system/views.py
def getDayTaskList(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_list = StudyScheduledTask.objects.filter(created_by__in=user_list).order_by('-pk') # 查询待完成任务列表
rsp_dict['data_list'] = data_list context_object_name = "scheduled_task_list"
template_name = "study_system/home.html"
rsp_dict['html_file'] = 'study_system/task/dayTaskList.html'
rsp_dict['context_object_name'] = context_object_name return render(request, template_name, rsp_dict) def toNewDayTask(request):
'''
@方法名称: 跳转到新增定时务视图
@作 者: PandaCode辉
@weixin公众号: PandaCode辉
@创建时间: 2023-10-10
'''
rsp_dict = {}
rsp_dict["pageTitle"] = "新增定时任务"
# 'html_file': 'xxx.html' 动态指定模板页面 ; 'menuTo': 'task' = 任务管理 ;
rsp_dict['html_file'] = 'study_system/task/addDayTask.html' return render(request, "study_system/home.html", rsp_dict) def addNewDayTask(request):
'''
@方法名称: ajax请求, 表单视图,新增定时任务
@作 者: PandaCode辉
@weixin公众号: PandaCode辉
@创建时间: 2023-10-10
'''
# 初始化响应容器
rsp_dict = {"result": "error", "errorMsg": "系统错误"}
# 是否ajax请求
if request.is_ajax():
try:
rest = request.POST
schedule_type = rest['scheduleType']
task_title = rest['taskTitle']
task_type = int(rest['taskType'])
task_description = rest['taskDescription']
reward_points = int(rest['rewardPoints'])
deadline_days = int(rest['deadlineDays'])
phone_num = rest['phoneNum']
scheduleDay = rest['scheduleDay']
scheduleTime = rest['scheduleTime']
# 定时时间 拼接日期时间
schedule_time = scheduleDay + " " + scheduleTime
# 获取当前用户名
username = request.session.get('username')
# 根据用户名获取用户对象
cur_user = StudyUser.objects.get(username=username)
print('根据用户名查询用户对象:' + str(cur_user))
# 创建者ID,使用 StudyUser 对象赋值
created_by = cur_user # 今天
# UTC格式当前时区时间
t = time.localtime()
work_date = time.strftime("%Y-%m-%d %H:%M:%S", t)
print('当前日期时间:' + str(work_date)) # 创建对象并保存到数据库
studyScheduledTask = StudyScheduledTask(task_type=task_type, schedule_type=schedule_type,
schedule_time=schedule_time.strip(), task_title=task_title,
task_description=task_description, reward_points=reward_points,
deadline_days=deadline_days, phone_num=phone_num,
created_time=work_date, update_time=work_date,
created_by=created_by)
# 保存到数据库是否成功
studyScheduledTask.save()
rsp_dict["result"] = "success"
except Exception as e:
rsp_dict["errorMsg"] = "新增定时任务保存到数据库失败." # 成功与否都返回json数据格式
return JsonResponse(rsp_dict)
4,编辑页面模板代码:
4.1. 定时任务列表页面
./mysite/study_system/templates/study_system/task/dayTaskList.html
# 更多代码内容请关注weixin公众号: PandaCode辉
4.2. 添加定时任务页面
./mysite/study_system/templates/study_system/task/addDayTask.html
# 更多代码内容请关注weixin公众号: PandaCode辉
第二步:运行测试-任务管理功能
1,登录用户后,点击查看定时任务列表页面

2,新增定时任务页面

循环周期:可以选择每天1次,定时1次,每周几1次,常用的还是每天1次周期。

-------------------------------------------------end -------------------------------------------------
Django实战项目-学习任务系统-定时任务管理的更多相关文章
- 01-Flutter移动电商实战-项目学习记录
一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常学着学着就不学了),故采用博客监督以记之. 1. ...
- Node.js实战项目学习系列(1) 初识Node.js
前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...
- Django ---- blog项目学习所得
一.登录功能 1.采用ajax 提交form表单的方式 2.后台生成随机验证码,登录时提交验证码 3.用PLI库生成随机验证码,置于session中,登录时与前台提交的code进行upeer()的验证 ...
- SpringMVC+Mybatis+Mysql实战项目学习--环境搭建
1.开发IDE:Spring Tool Suite(自带maven插件) 下载地址https://spring.io/tools/sts/all 在STS.ini配置信息中加下面一行 保证编码格式为u ...
- Node.js实战项目学习系列(2) 开发环境和调试工具
前言 上一节让我们对Node.js有一个初步的了解,那么现在可以开始正式学习下Node.js的开发了,但是任何一门语言要设计到开发,就必须先学习开发环境以及调试.本文将主要讲解这些内容. 本文涉及到的 ...
- Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)
前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量 ...
- Node.js实战项目学习系列(5) node基础模块 path
前言 前面已经学习了很多跟Node相关的知识,譬如开发环境.CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了. path path 模块提供用于处理文件路径和目录 ...
- Node.js实战项目学习系列(3) CommonJS 模块化规范
前言 想开始编写Node.js代码,那么我们就必须先熟悉它的模块化规范CommonJS,本文将详细讲解CommonJS规范 本文代码 >>> github 地址 CommonJS N ...
- Python Django CMDB项目实战之-1如何开启一个Django-并设置base页、index页、文章页面
1.环境 win10 python 2.7.14 django 1.8.2 需要用到的依赖包:MySQLdb(数据库的接口包).PIL/pillow(处理图片的包) 安装命令: pip install ...
- Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示
基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...
随机推荐
- 不为人知的网络编程(十四):拔掉网线再插上,TCP连接还在吗?一文即懂!
本文由作者小林coding分享,来自公号"小林coding",有修订和改动. 1.引言 说到TCP协议,对于从事即时通讯/IM这方面应用的开发者们来说,再熟悉不过了.随着对TCP理 ...
- 记录下uniapp的请求封装
请求封装就是经常见的事但是从来没有记录过,今天来记录一下简单的封装 首先封装自己的域名,可以和封装写在一起,但是最好单独写一个独立的js文件 这边就以一个域名为例 let baseUrl='域名地址' ...
- Nginx-总结列表
Nginx配置详解 Nginx实现前后端分离,反向代理.负载均衡 Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 .它支持内核 Poll 模型,能经受高负载的考验,有报告表明 ...
- SpringBoot集成Jwt(详细步骤+图解)
SpringBoot集成Jwt(详细步骤+图解)Jwt简介 JSON Web Token是目前最流行的跨域认证解决方案,,适合前后端分离项目通过Restful API进行数据交互时进行身份认证 Jwt ...
- Mysql存储引擎Innodb和MyISAM的区别
一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是 ...
- layui table表格单元格动态合并,并设置隔行变色
layui table表格单元格动态合并,并设置隔行变色,此代码只针对嵌套数组只有一层的时候有效,多个数组嵌套还在冥想当中!! 需求描述 我们知道在layui插件官方平台有个可以无限极单元格合并的模块 ...
- Huawei LiteOS基于Cortex-M4 GD32F4平台移植
1.Huawei LiteOS简介 Huawei LiteOS源码获取: https://github.com/LiteOS/LiteOS, https://gitee.com/LiteOS/Lite ...
- 近期最值得关注的AI技术报告与Agent综述!
写在前面 如题,近期优秀的大模型层出不穷.作为技术人,需要阅读高质量的AI技术报告或论文,并且掌握未来应用趋势.本文将推荐一些高质量的AI技术报告,以及Agent智能体综述. 大模型技术报告 Deep ...
- 使用SOUI4的脚本模块
SOUI4.1提供了全新的lua脚本模块支持,使用这个新版本的脚本模块,可以轻松将所有UI布局及业务逻辑全部使用XML+LUA实现,基本上就是一个超轻型浏览器. SOUI4.0相对于SOUI3最大的区 ...
- Linux安装Jenkins指南
Linux安装Jenkins指南 Jenkins,作为一款开源的自动化服务器,广泛用于持续集成和持续部署(CI/CD)流程中.它提供了强大的插件生态系统,使得集成各种开发工具.版本控制系统和构建工具变 ...