当前位置: 首页 > news >正文

Django实现音乐网站 ⑽

使用Python Django框架制作一个音乐网站,

本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。

目录

歌曲类型功能优化

新增编辑

优化输入项标题显示

父类型显示改为下拉菜单

列表显示

父类型显示名称

过滤器增加父类型

歌单表功能优化

新增编辑

单曲选项增加歌手名称

歌单类型选项名称修改

字段显示名称修改

播放量改为不可编辑

歌单增加描述字段

首先表模型中增加描述字段

执行表迁移

列表显示

显示播放量、添加时间

显示编辑时间、歌单描述

歌单封面改为显示图片

总结


歌曲类型功能优化

新增编辑

优化输入项标题显示

把显示字段名称改为显示名称

内容如下:

class SongCategory(models.Model):""" 歌曲类型表 """class Meta:verbose_name = '歌曲类型'verbose_name_plural = '歌曲类型'name = models.CharField('类型名称', max_length=100, help_text='请输入类型名称')pid = models.IntegerField('父类型id', default=0, help_text='父类型')

效果:

父类型显示改为下拉菜单

父类型字段增加choice参数,就可变成下拉菜单选项,需要注意字段类型为tuple。

内容如下:

categoryChoice = [(0, '默认'), (1, '主题'), (2, '心情'),(3, '场景'),(4, '年代'),(5, '曲风流派'), (6, '语言')
]
pid = models.IntegerField('父类型', default=0, help_text='父类型',choices=categoryChoice
)

效果:

原本想做成表模型调用自己的父类型组成列表来展示和添加;结果发现表模型没创建时候,这个表模型是不存在的,也就无法调用,暂时先做成固定父类型,添加子类型。

列表显示

父类型显示名称

默认显示父类型是类型id,改为显示类型名称。

修改player/admin.py中的歌曲类型后台类中对pid字段返回内容。

class SongCategoryAdmin(admin.ModelAdmin):""" 后台歌单类型类 """def get_name(self):return self.nameget_name.short_description = '类型名称'def get_pid(self):categoryChoice = [(0, '默认'),(1, '主题'),(2, '心情'),(3, '场景'),(4, '年代'),(5, '曲风流派'),(6, '语言')]for index, item in categoryChoice:if index == self.pid:return itemget_pid.short_description = '父类型'

效果:

过滤器增加父类型

过滤器中增加pid字段设置,可以设置在name的前面。

内容如下:

list_filter = ['pid', 'name']

效果:

歌单表功能优化

新增编辑

单曲选项增加歌手名称

修改单曲表字符串返回格式。

内容如下:

class Singe(BaseModel):""" 单曲表 """......def __str__(self):return str(self.name) + ' - ' + str(self.singler)

效果:

歌单类型选项名称修改

默认显示对象,需要修改歌曲类型表模型类,增加__str__方法,设置返回格式。

内容如下:

def __str__(self):return self.name

效果:

字段显示名称修改

默认显示字段名称,需要改成字段表述的内容,这样便于理解和编辑。

 

修改player/models.py中歌单表模型类,设置字段的verbose_name属性。

内容如下:

class SongSheet(BaseModel):""" 歌单表 """class Meta:verbose_name = '歌单'verbose_name_plural = '歌单'name = models.CharField('歌单名称', max_length=100, help_text='请输入歌单名称')cover = models.ImageField('歌单封面图',upload_to=upload_save_path, help_text='请上传歌单封面图')playnum = models.IntegerField('播放量', default=0, help_text='请输入播放量')is_default = models.IntegerField('默认', default=0, choices=[('0', '是'), ('1', '否')], help_text='是否默认')# 歌曲类型与歌单表 多对多关系category = models.ManyToManyField('SongCategory', verbose_name='所属类型')# 歌单表与单曲表多对多关系singe = models.ManyToManyField('Singe', verbose_name='包含单曲')

效果:

播放量改为不可编辑

播放量是由前端查看歌单后增加数量,后台不能编辑。

需要设定播放量字段的editable为False。

内容如下:

playnum = models.IntegerField(default=0, editable=False)

保存后,新增和编辑中播放量填写项不再显示。

歌单增加描述字段

刚发现设计表时候没有歌单描述字段,现在加上。

首先表模型中增加描述字段

内容如下:

esc = models.TextField('歌单描述', default='', max_length=200, help_text='请输入歌单描述')

注意:需要设置默认,否则无法执行。

执行表迁移

表模型发生改变后,需要创建表迁移文件和执行表迁移。

python manage.py makemigrations
python manage.py migrate

数据表增加desc字段

列表显示

显示播放量、添加时间

显示编辑时间、歌单描述

修改player/admin.py中歌单表后台类。

内容如下:

class SongSheetAdmin(admin.ModelAdmin):""" 后台歌单类 """def get_name(self):return self.nameget_name.short_description = '类型名称'def get_cover(self):return format_html('<img src="/media/{}" width="100px" height="100px"/>',self.cover,)get_cover.short_description = '歌单封面'def get_desc(self):return self.descget_desc.short_description = '歌单描述'def get_playnum(self):return self.playnumget_playnum.short_description = '播放量'def get_addtime(self):return self.addtimeget_addtime.short_description = '创建时间'def get_updatetime(self):return self.updatetimeget_updatetime.short_description = '编辑时间'# 显示字段list_display = ['id', get_name, get_cover, get_desc, get_playnum, get_addtime, get_updatetime]

效果:

歌单封面改为显示图片

修改player/admin.py中歌单表后台类;把封面方法返回内容改为img元素。

内容如下:

def get_cover(self):return format_html('<img src="/media/{}" width="100px" height="100px"/>',self.cover,)

 效果:

总结

至此后台功能开发和优化算基本完成,之后开始前端方面开发。

相关文章:

Django实现音乐网站 ⑽

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…...

SpringMVC的架构有什么优势?——异常处理与文件上传(五)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

【java面向对象中static关键字】

提纲 static修饰成员变量static修饰成员变量的应用场景static修饰成员方法static修饰成员方法的应用场景static的注意事项static的应用知识&#xff1a;代码块static的应用知识&#xff1a;单例设计模式 static静态的意思&#xff0c;可以修饰成员变量&#xff0c;成员方法&a…...

系统学习Linux-Redis集群

目录 一、Redis主从复制 概念 作用 缺点 流程 二、Reids哨兵模式&#xff08;sentinel&#xff09; 概念 作用 缺点 结构 搭建 三、redis集群 概述 原理 架构细节 选举过程 实验环境模拟 一、Redis主从复制 概念 是指将一台Redis服务器的数据&#xff0c;复制…...

【每日随笔】帝王心术 ② ( 如何培养下一代 | 重点培养孩子某一项特长 | 价值观培养 | 独立思考 | 人性和谋略教育 | 资源传承 | 人生指引 )

文章目录 一、重点培养孩子某一项特长二、价值观培养三、独立思考四、人性和谋略教育五、资源传承六、人生指引 一、重点培养孩子某一项特长 很多人 作为 父母 , 教育孩子 , 没有出息的占大多数 ; 父母 教育 孩子 , 给孩子培训 , 一般都给报个兴趣班 , 如果兴趣班的种类超过两…...

Git简介

Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同&#xff0c;它采用了分布式版本库的方式&#x…...

STM32入门学习之定时器输入捕获

1.定时器的输入捕获可以用来测量脉冲宽度或者测量频率。输入捕获的原理图如下&#xff1a; 假设定时器是向上计数。在图中&#xff0c;t1~t2之间的便是我们要测量的高电平的时间(脉冲宽度)。首先&#xff0c;设置定时器为上升沿捕获&#xff0c;如此一来&#xff0c;在t1时刻可…...

贪心算法:基础入门篇

贪心算法&#xff1a;基础入门篇 文章目录&#xff1a; 贪心算法&#xff1a;基础入门篇一、认识贪心算法二、常见贪心问题2.1 纸牌问题2.2 背包问题&#xff08;基础版&#xff09;2.3 简单数学证明问题 三、总结 一、认识贪心算法 在求最优解的问题中&#xff0c;以某种贪心…...

【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法

Windows10下启动RocketMQ报错&#xff1a;找不到或无法加载主类 一、问题产生二、产生原因三、解决办法 一、问题产生 参考RocketMQ Github官网上的说明&#xff0c;下载rocketmq-all-5.1.3-bin-release.zip&#xff0c;解压配置环境变量后&#xff0c;执行如下命令&#xff1a…...

深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级)

深入篇【Linux】学习必备&#xff1a;进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级&#xff09; 一.进程概念(PCB/task_struct)二.查看进程(top/ps)三.创建进程(fork)四.进程状态(僵尸进程/孤儿进程)五.进程优先级(PRI/NI) 一.进程概念(PCB/task_struct) 1.什么…...

Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?

你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。标题取自其中一则分享&#xff0c;不代表全部内容都是该主题&#xff0c;特此声明。 本周刊精心筛选国内外的 250 信息源&#xff0c;为你挑选最值得分享的文章、教程、开源…...

基于Java+SpringBoot+Vue的网吧管理系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...

redis设置database 不生效剖析

设置database 不生效剖析 前言配置加载类问题commons-pool 对象池 主页传送门&#xff1a;&#x1f4c0; 传送 前言 事情是这样的 今天在拉取了同事的代码做redis缓存设置的时候&#xff0c;发现即使已经设置了database, 但是存数据的时候还是用的默认0数据库。这引起了我的好…...

汽车及汽车零部件行业云MES解决方案

汽配行业现状&#xff1a; 随着经济全球化进程加快&#xff0c;一直走在智能化改造&#xff0c;数字化转型前沿的汽车行业企业&#xff0c;面临的信息化需求也日益增加&#xff0c;不管德系&#xff0c;美系还是日系供应链的各大厂商&#xff0c;均将企业信息化&#xff0c;数字…...

算法工程师-机器学习面试题总结(4)

深度学习 DNN 描述一下神经网络&#xff1f;推导反向传播公式&#xff1f; 神经网络&#xff08;Neural Network&#xff09;是一种模拟人脑神经系统的计算模型。它由许多节点&#xff08;神经元&#xff09;和连接它们的权重组成&#xff0c;这些节点和权重可以学习和调整&a…...

Linux学习之awk函数

awk里边的函数分为内置函数和自定义函数。 内置函数有下边的几种&#xff1a; 算术函数&#xff08;arithmetic&#xff09; 字符串函数&#xff08;string&#xff09; 输入/输出函数和通用函数&#xff08;input/output, and general&#xff09; 自定义函数格式如下&#xf…...

Redis的数据结构到底是一种什么样的结构?

有了上一篇NoSQL的基础&#xff0c;我们也都知道了Redis就是一种典型的NoSql&#xff0c;那我们就先简简单单的介绍一下Redis&#xff1a; Redis是什么&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的使用ANSI C语言编写的高性能键值存储系统…...

eclipse 导入项目js报错问题

eclipse 导入项目后会出现项目中的js文件报错&#xff08;红叉&#xff09;&#xff0c;如下图所示&#xff0c;有时候报错的文件很多&#xff0c;需要集中处理。 解决办法&#xff1a; 右键项目名称》Properties》MyEclipse》JavaScript》Include Path&#xff0c;在右侧选择“…...

《HeadFirst设计模式(第二版)》第七章代码——外观模式

代码文件目录&#xff1a; Subsystem: Amplifier package Chapter7_AdapterAndFacadePattern.FacadePattern.Subsystem;/*** Author 竹心* Date 2023/8/8**///扬声器 public class Amplifier {int volume 0;//音量public void on(){System.out.println("The amplifier …...

前端杂项-个人总结八股文的背诵方案

个人总结八股文的背诵方案 URL到显示网页的过程 浏览器解析URL&#xff0c;获取协议&#xff0c;主机名&#xff0c;端口号&#xff0c;路径等信息&#xff0c;并通过DNS查询将主机名转换为对应的IP地址浏览器与服务器建立TCP&#xff0c;进行三次握手。浏览器向服务器发送HT…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...