接着上期代码框架,开发第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 -------------------------------------------------