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框架制作一个音乐网站, 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…...

SpringMVC的架构有什么优势?——异常处理与文件上传(五)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...

【java面向对象中static关键字】
提纲 static修饰成员变量static修饰成员变量的应用场景static修饰成员方法static修饰成员方法的应用场景static的注意事项static的应用知识:代码块static的应用知识:单例设计模式 static静态的意思,可以修饰成员变量,成员方法&a…...

系统学习Linux-Redis集群
目录 一、Redis主从复制 概念 作用 缺点 流程 二、Reids哨兵模式(sentinel) 概念 作用 缺点 结构 搭建 三、redis集群 概述 原理 架构细节 选举过程 实验环境模拟 一、Redis主从复制 概念 是指将一台Redis服务器的数据,复制…...
【每日随笔】帝王心术 ② ( 如何培养下一代 | 重点培养孩子某一项特长 | 价值观培养 | 独立思考 | 人性和谋略教育 | 资源传承 | 人生指引 )
文章目录 一、重点培养孩子某一项特长二、价值观培养三、独立思考四、人性和谋略教育五、资源传承六、人生指引 一、重点培养孩子某一项特长 很多人 作为 父母 , 教育孩子 , 没有出息的占大多数 ; 父母 教育 孩子 , 给孩子培训 , 一般都给报个兴趣班 , 如果兴趣班的种类超过两…...

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

STM32入门学习之定时器输入捕获
1.定时器的输入捕获可以用来测量脉冲宽度或者测量频率。输入捕获的原理图如下: 假设定时器是向上计数。在图中,t1~t2之间的便是我们要测量的高电平的时间(脉冲宽度)。首先,设置定时器为上升沿捕获,如此一来,在t1时刻可…...
贪心算法:基础入门篇
贪心算法:基础入门篇 文章目录: 贪心算法:基础入门篇一、认识贪心算法二、常见贪心问题2.1 纸牌问题2.2 背包问题(基础版)2.3 简单数学证明问题 三、总结 一、认识贪心算法 在求最优解的问题中,以某种贪心…...

【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法
Windows10下启动RocketMQ报错:找不到或无法加载主类 一、问题产生二、产生原因三、解决办法 一、问题产生 参考RocketMQ Github官网上的说明,下载rocketmq-all-5.1.3-bin-release.zip,解压配置环境变量后,执行如下命令:…...

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

Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中一则分享,不代表全部内容都是该主题,特此声明。 本周刊精心筛选国内外的 250 信息源,为你挑选最值得分享的文章、教程、开源…...

基于Java+SpringBoot+Vue的网吧管理系统设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...

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

汽车及汽车零部件行业云MES解决方案
汽配行业现状: 随着经济全球化进程加快,一直走在智能化改造,数字化转型前沿的汽车行业企业,面临的信息化需求也日益增加,不管德系,美系还是日系供应链的各大厂商,均将企业信息化,数字…...
算法工程师-机器学习面试题总结(4)
深度学习 DNN 描述一下神经网络?推导反向传播公式? 神经网络(Neural Network)是一种模拟人脑神经系统的计算模型。它由许多节点(神经元)和连接它们的权重组成,这些节点和权重可以学习和调整&a…...

Linux学习之awk函数
awk里边的函数分为内置函数和自定义函数。 内置函数有下边的几种: 算术函数(arithmetic) 字符串函数(string) 输入/输出函数和通用函数(input/output, and general) 自定义函数格式如下…...

Redis的数据结构到底是一种什么样的结构?
有了上一篇NoSQL的基础,我们也都知道了Redis就是一种典型的NoSql,那我们就先简简单单的介绍一下Redis: Redis是什么? Redis(Remote Dictionary Server)是一个开源的使用ANSI C语言编写的高性能键值存储系统…...

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

《HeadFirst设计模式(第二版)》第七章代码——外观模式
代码文件目录: 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,获取协议,主机名,端口号,路径等信息,并通过DNS查询将主机名转换为对应的IP地址浏览器与服务器建立TCP,进行三次握手。浏览器向服务器发送HT…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...

构建Docker镜像的Dockerfile文件详解
文章目录 前言Dockerfile 案例docker build1. 基本构建2. 指定 Dockerfile 路径3. 设置构建时变量4. 不使用缓存5. 删除中间容器6. 拉取最新基础镜像7. 静默输出完整示例 docker runDockerFile 入门syntax指定构造器FROM基础镜像RUN命令注释COPY复制ENV设置环境变量EXPOSE暴露端…...

持续交付的进化:从DevOps到AI驱动的IT新动能
文章目录 一、持续交付的本质:从手动到自动的交付飞跃关键特性案例:电商平台的高效部署 二、持续交付的演进:从CI到AI驱动的未来发展历程 中国…...
LeetCode第244题_最短单词距离II
LeetCode第244题:最短单词距离II 问题描述 设计一个类,接收一个单词数组 wordsDict,并实现一个方法,该方法能够计算两个不同单词在该数组中出现位置的最短距离。 你需要实现一个 WordDistance 类: WordDistance(String[] word…...
Async-profiler 内存采样机制解析:从原理到实现
引言 在 Java 性能调优的工具箱中,async-profiler 是一款备受青睐的低开销采样分析器。它不仅能分析 CPU 热点,还能精确追踪内存分配情况。本文将深入探讨 async-profiler 实现内存采样的多种机制,结合代码示例解析其工作原理。 为什么需要内…...

< 自用文 OS有关 新的JD云主机> 国内 京东云主机 2C4G 60G 5Mb 498/36月 Ubuntu22
攒了这么久,废话一些: 前几周很多事儿,打算回北京,开个清真的德克萨斯烤肉店,写了一篇 : < 自用文 Texas style Smoker > 美式德克萨斯烟熏炉 从设计到实现 (第一部分&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(八)
uboot启动异常及解决 网络问题及解决 打开STM32CubeMX选中ETH1 - A7NS(Linux)Mode:RGMII(Reduced GMII)勾选ETH 125MHz Clock Input修改GPIO引脚如图所示 Net: No ethernet found.生成代码后,修改u-boot下…...

线性规划饮食问题求解:FastAPI作为服务端+libhv作为客户端实现
之前在 Pyomo介绍-CSDN博客 中介绍过通过Pyomo求解线性规划问题,这里使用FastAPI作为服务端,开源网络库libhv作为客户端,求解饮食成本最小化问题。 服务端测试代码test_fastapi_pyomo_server.py如下: from fastapi import FastAP…...
SCADA|RESTful学习,Apipost通过GET获取KingSCADA实时数据
哈喽,你好啊,我是雷工! 以前记录过一篇《安装APIPost工具,了解RESTful》的笔记。 最近涉及到SCADA程序和MES对接,这种信息化的对接,常常要用到RESTful。 好像还有什么Webservices,我是听的一头雾水。 根本听不懂啊,于是加班补补课,先了解下RESTful。 01 RESTful传…...