Django实战项目-学习任务系统-兑换物品管理
接着上期代码框架,开发第5个功能,兑换物品管理,再增加一个学习兑换物品表,主要用来维护兑换物品,所需积分,物品状态等信息,还有一个积分流水表,完成任务奖励积分,兑换物品消耗积分。
要想激励一个人的学习动力,最好能有实际的奖励,完成任务后,系统应给予一定的奖励,如积分或实际物品等。
目前系统考虑使用积分奖励,然后这些积分积累多了就可以兑换实际物品,这些奖励可以激励用户持续学习。
第一步:编写第5个功能-兑换物品管理
1,编辑模型文件:
./mysite/study_system/models.py:
# 更多代码内容请关注weixin公众号: PandaCode辉
2,编辑urls配置文件:
./mysite/study_system/urls.py
# 更多代码内容请关注weixin公众号: PandaCode辉
3,编辑视图文件:
./mysite/study_system/views.py
def getExchangeItemList(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 = StudyExchangeItem.objects.filter(created_by__in=user_list).order_by('-pk') rsp_dict['data_list'] = data_list context_object_name = "exchange_item_list" template_name = "study_system/home.html" rsp_dict['html_file'] = 'study_system/item/exchangeItemList.html' rsp_dict['context_object_name'] = context_object_name return render(request, template_name, rsp_dict) def toNewExchangeItem(request): ''' @方法名称: 跳转到新增兑换物品视图 @作 者: PandaCode辉 @weixin公众号: PandaCode辉 @创建时间: 2023-10-10 ''' rsp_dict = {} rsp_dict["pageTitle"] = "新增兑换物品" rsp_dict['html_file'] = 'study_system/item/addExchangeItem.html' return render(request, "study_system/home.html", rsp_dict) def addExchangeItem(request): ''' @方法名称: ajax请求, 表单视图,新增兑换物品 @作 者: PandaCode辉 @weixin公众号: PandaCode辉 @创建时间: 2023-10-10 ''' # 初始化响应容器 rsp_dict = {"result": "error", "errorMsg": "系统错误"} # 是否ajax请求 if request.is_ajax(): try: rest = request.POST item_name = rest['itemName'] item_points = int(rest['itemPoints']) item_description = rest['itemDescription'] item_status = rest['itemStatus'] # 获取当前用户名 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)) # 创建对象并保存到数据库 studyExchangeItem = StudyExchangeItem(item_name=item_name, item_points=item_points, item_description=item_description, item_status=item_status, created_time=work_date, update_time=work_date, created_by=created_by) # 保存到数据库是否成功 studyExchangeItem.save() rsp_dict["result"] = "success" except Exception as e: rsp_dict["errorMsg"] = "新增兑换物品保存到数据库失败." # 成功与否都返回json数据格式 return JsonResponse(rsp_dict)
兑换物品视图,更新物品状态,同时添加消耗积分流水。
# 更多代码内容请关注weixin公众号: PandaCode辉
4,编辑页面模板代码:
4.1. 兑换物品列表页面
./mysite/study_system/templates/study_system/item/exchangeItemList.html
# 更多代码内容请关注weixin公众号: PandaCode辉
4.2. 新增兑换物品页面
./mysite/study_system/templates/study_system/item/addExchangeItem.html
# 更多代码内容请关注weixin公众号: PandaCode辉
第二步:运行测试-兑换物品管理功能
1,登录用户后,点击查看兑换物品列表页面
点击可兑换物品,如果用户积分充足,则兑换成功,更新物品状态。
-------------------------------------------------end -------------------------------------------------