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 -------------------------------------------------

 

posted @ 2023-10-31 15:09  PandaCode辉  阅读(26)  评论(0编辑  收藏  举报