Django实战项目-学习任务系统-兑换物品管理

news2025/1/17 3:55:50

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1154239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通用开源自动化测试框架 - Robot Framework

一、什么是 Robot Framework? 1. Robot Framework 的历史由来 Robot Framework是一种通用的自动化测试框架,最早由Pekka Klrck在2005年开发,并由Nokia Networks作为内部工具使用。后来,该项目以开源形式发布,并得到了…

SPSS平均值检验

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…

ChatGPT文章创作指令Prompt提示词模板

目录 用途&注意说明提示模板中文版英文版 指令说明提示示例输出结果示例 用途&注意说明 用途:根据命题写作,可以用来起草文章,写英语范文适合。 注意点:如果不给范文示例,会写成英文小作文的翻译版。 提示模…

基于Selenium+Python的web自动化测试框架详解

一、什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE:Firefo…

HZGO-A-031/315、KZGO-A-031/50比例减压阀放大器

RZGO-A-010/210、RZGO-A-010/32、RZGO-A-010/100、RZGE-A-010/210、RZGE-A-010/32、RZGE-A-010/100、CART RZGE-A-010/210、CART RZGE-A-010/32、CART RZGE-A-010/100、RZGO-A-031/210、RZGO-A-033/100、HZGO-A-033/350、HZGO-A-031/315、KZGO-A-031/50、KZGO-A-033/210滑阀型、…

对音频文件的处理:音频信息,读取内容,获取时长,切割音频,pcm与wav互转

音频处理发现的比较简单的代码,原作者代码在github:GitHub - silencesmile/python_wav: 对音频文件的处理:音频信息,读取内容,获取时长,切割音频,pcm与wav互转 可以按给定的开始和结束时间调用代…

Spring Boot Web MVC

文章目录 一、Spring Boot Web MVC 概念二、状态码三、其他注解四、响应操作 一、Spring Boot Web MVC 概念 Spring Web MVC 是⼀个 Web 框架,一开始就包含在Spring 框架里。 1. MVC 定义 软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视…

最新版本idea2023.2新特性,最后一点你肯定想不到哈哈

idea2023.2版本正式发布,最新的idea2023.2包含以下新特性: AI Assistant 当前具备一组由 AI 提供支持的初始功能,提供集成式 AI 聊天,可以完成一些任务,例如自动编写文档注释、建议名称、生成提交消息等。编辑器内性能…

【23真题】对不起,由于我的择校分析,这所可能会炸!

哈喽大家好,现在这个时间节点,有很多同学开始刷真题了!所以23真题系列正式启动!小马哥将全面发布23真题及详细解析! 注意太原科技大学,自我发了择校分析以后(苍天为证,我真的没有任…

水果FL Studio21.2体验版下载安装教程(增加云服务功能)

FL Cloud 音效库包含开放版权的Loop和采样,以及来自 FL Studio 著名用户的艺术家独家内容。更新后,现在还可以使用人工智能辅助母带处理和数字发行功能来制作音轨。FL Studio 由最初的 "Fruity Loops" DAW 发展而来,25 年来&#x…

RISC-V IDE MRS无感远程协助模块详解

RISC-V IDE MRS无感远程协助模块详解 一、说明 1.1 概述 针对RISC-V/ARM等内核MCU的嵌入式集成开发环境MRS(MounRiver Studio)从V1.90版本开始内置无感远程协助模块(Sensorless Remote Assistant Module,以下简称SRA模块)。SRA模块是一款支…

PowerCLI vCenter批量更改esxi主机root密码

前提条件 安装 powercli开启wmi,配置网卡,参考 PowerCLi 批量添加所有esxi到vCenter 编写通过vCenter批量更改所有esxi主机root密码自动化脚本 最终实现批量重置所有esxi 密码,无需干预。$vCenterServer = "192.168.19.254" #你的vCenter 管理中心地址更改$User= …

国外调查问卷真的能做吗?

大家好,我是橙河网络,今天聊一聊国外调查问卷真的能做吗? 国外问卷调查这个项目已经存在多年,其赚钱逻辑非常简单,即通过填写国外公司发放的商业调查问卷来获取报酬,一般都是以美元的方式结算。这些问卷可…

性能优化之AA反走样优化

反走样主要是解决采样不足导致的。一般方案选择需要兼顾画面质量与渲染效率权衡的前提下,对图像进行增强。反走样经过了第一代超级采样抗锯齿SSAA,到第二代的多重采样抗锯齿MSAA,快速近似采样FXAA,增强子像素变形抗锯齿SMAA&#…

弱网测试神器—Qnet(上)

一、APP 弱网测试背景 App 在使用的过程中,难免会遇到不同的弱网络环境,像在公车上、在地铁、地下车库等。在这种情况下,手机常常会出现网络抖动、上行或下行超时,导致 APP 应用中出现丢包延迟,从而影响用户体验。 作…

写在2023末,很庆幸自己入了软件测试这行...

为什么会学习软件测试? 已经28岁了,算一下快过去3年了,刚毕业那会工作了一年,因为自己当时很迷茫(觉得自己挺废的),所以就没去工作就一直在家,家里固定每个月给点生活费&#xff0c…

查看公司电脑里软件安装

查看公司电脑里软件安装是一项重要的任务,可以帮助管理员了解员工在工作中使用的软件情况,以及发现潜在的安全风险。 方法一:事件查看器 点击开始菜单,搜索“事件查看器” 2、点击“windows”日志,打开“应用程序”&a…

XAMPP的下载安装配置详细教程

XAMPP的下载安装配置详细教程(含拒绝访问坑) ​ xampp 话不相瞒,当初为了在XAMPP(ApacheMySQLPHPPERL)里面配置phpwind,我在卸载与安装之间来回了不下10次,但是我的phpwind始终还是安装不成功…

『OpenStack』云计算平台『Nova』计算服务学习指南

前言 本文将会讲解 OpenStack 平台计算服务组件 Nova ,结合抽象概念和简单易懂的实战操作,帮助您更好的理解 Nova 计算服务在 OpenStack 中的作用 系统配置:宿主机 Ubuntu 20.04(WSL2) 简介 OpenStack 官网链接&…

如何利用数字化系统发挥数据的最大价值?

社会日新月异,企业管理也在时刻发生着变化,数字化系统的引入,解决了企业纸质化的汇报形式,简便快捷,一切事物都是有两面性的,数字化也给企业带来了新的挑战,如何利用数字化发挥数据的最大价值&a…