接着上期代码框架,开发第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,登录用户后,点击查看兑换物品列表页面
点击可兑换物品,如果用户积分充足,则兑换成功,更新物品状态。
文章来源:https://www.toymoban.com/news/detail-737862.html
-------------------------------------------------end -------------------------------------------------文章来源地址https://www.toymoban.com/news/detail-737862.html
到了这里,关于Django实战项目-学习任务系统-兑换物品管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!