Django实现音乐网站 ⑷

article/2025/9/10 13:16:21

使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发,

本篇主要是后台歌曲类型表、歌单表模块功能开发。

目录

表结构设计

歌曲类型表结构

歌单表结构

创建表模型

创建表

后台注册表模型

引入表模型

后台自定义

总结


表结构设计

歌曲类型表结构

字段

类型

注释

id

int(11)

自增id

name

varchar(100)

歌单名称

pid

int(11)

父类型id 0表明为父类

歌单表结构

字段

类型

注释

id

int(11)

name

varchar(100)

歌单名称

cover

varchar(100)

封面路径

playnum

int(11)

播放量

addtime

int(11)

添加时间

updatetime

int(11)

更新时间

 

创建表模型

还是在player/models.py中添加。歌单表与类型表是多对多关系,中间表不需要创建,

只需要声明好关系,django会自动创建相应中间表。

内容如下:

class SongCategory(models.Model):""" 歌曲类型表 """name = models.CharField(max_length=100, help_text='请输入类型名称')pid = models.IntegerField(default=0, help_text='父类型id')class SongSheet(models.Model):""" 歌单表 """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='请输入播放量')addtime = models.DateTimeField(auto_now_add=True)updatetime = models.DateTimeField(auto_now=True)# 歌曲类型与歌单表 多对多关系category = models.ManyToManyField('SongCategory')# 歌单表与单曲表多对多关系singe = models.ManyToManyField('Singe')

注意:可通过choices参数把输入框改为下拉菜单。

创建表

python manage.py makemigrationspython manage.py migrate

创建了四个表,分别为歌曲类型表、歌单表、歌单类型表、歌单单曲表;

歌曲类型表和歌单表结构与表结构设计相同,不再展示;

中间表结构如下:

CREATE TABLE `player_songsheet_singe` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`songsheet_id` bigint(20) NOT NULL,`singe_id` bigint(20) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `player_songsheet_singe_songsheet_id_singe_id_78f26d1c_uniq` (`songsheet_id`,`singe_id`),KEY `player_songsheet_singe_songsheet_id_2375e76e` (`songsheet_id`),KEY `player_songsheet_singe_singe_id_022e51d3` (`singe_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;CREATE TABLE `player_songsheet_category` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`songsheet_id` bigint(20) NOT NULL,`songcategory_id` bigint(20) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `player_songsheet_categor_songsheet_id_songcategor_d9f0af95_uniq` (`songsheet_id`,`songcategory_id`),KEY `player_songsheet_category_songsheet_id_80b16cc8` (`songsheet_id`),KEY `player_songsheet_category_songcategory_id_397ab572` (`songcategory_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

可以看出中间表字段关系与设计相符,并且相应索引都已经创建。

后台注册表模型

在player/admin.py中操作。

引入表模型

from .models import SongCategory, SongSheet

后台自定义

修改默认的显示、过滤、搜索、分页。

class SongCategoryAdmin(admin.ModelAdmin):def get_name(self):return self.nameget_name.short_description = '类型名称'def get_pid(self):return self.pidget_pid.short_description = '类型父id'# 显示字段list_display = ['id', get_name, get_pid]# 过滤器list_filter = ['name']# 搜索search_fields = ['name']# 分页list_per_page = 10class SongSheetAdmin(admin.ModelAdmin):def get_name(self):return self.nameget_name.short_description = '类型名称'def get_cover(self):return self.coverget_cover.short_description = '歌单封面'def get_addtime(self):return self.addtimeget_addtime.short_description = '创建时间'def get_updatetime(self):return self.updatetime# 显示字段list_display = ['id', get_name, get_cover]# 过滤器list_filter = ['name']# 搜索search_fields = ['name']# 分页list_per_page = 10admin.site.register(SongCategory, SongCategoryAdmin)
admin.site.register(SongSheet, SongSheetAdmin)

效果:

 

总结

表结构的设计和创建,包括后台注册操作起来大致相同,多创建一些表熟练了就简单了;

至此数据表设计和创建基本完成,下一步就是数据添加和后台使用优化了。


http://chatgpt.dhexx.cn/article/hV1YhVKg.shtml

相关文章

Django计算机毕业设计基于Web的在线音乐网站(程序+lw)Python

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

springboot+jsp云端在线音乐分享平台java

随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,在线音乐平台当然也不能排除在外,从歌曲类型、歌手信息、歌曲信息、音乐资讯的统计和分析,在过程中会产…

计算机毕业设计Node.js+Express音蕾心动(源码+程序+lw+远程调试)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

计算机毕设Node.js+Vue音蕾心动(程序+LW+部署)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

基于jsp和ssm架构实现KTV点歌系统演示【附项目源码+论文说明】分享

基于jsp和ssm架构实现KTV点歌系统演示 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&#…

Python-Django毕业设计音蕾心动(程序+Lw)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

Python+Django毕业设计音蕾心动(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于jsp和ssm架构实现KTV点歌系统演示【附项目源码+论文说明】

基于jsp和ssm架构实现KTV点歌系统演示 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&#…

(附源码)计算机毕业设计ssm爱音乐网站

毕设帮助,指导,本源码分享,调试部署(见文末) 3.4系统UML用例分析 3.4.1管理员用例 管理员登录后可进行首页、个人中心、用户管理、热门歌手管理、歌曲类型管理、歌曲信息管理、音乐视频管理、留言板管理、系统管理,管理员用例如…

计算机毕业设计Node.js+Vue基于Web的在线音乐网站(程序+源码+LW+部署)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离…

Python爬虫:想听榜单歌曲?使用BeautifulSoup库只需要14行代码即可搞定

目录 BeautifulSoup库安装BeautifulSoup库BeautifulSoup库简介选择解释器基础用法 节点选择器获取节点名称属性内容获取所有子节点获取所有子孙节点父节点与兄弟节点 方法选择器find_all()方法find()方法 CSS选择器嵌套选择节点获取属性与文本 通过浏览器直接Copy-CSS选择器实战…

【java毕业设计】基于B/S结构+mysql的KTV点歌系统设计与实现(程序源码)-KTV点歌系统

基于B/S结构mysql的KTV点歌系统设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于B/S结构mysql的KTV点歌系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及论文的获取方式。更多毕业设…

Django实现音乐网站 ⑽

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

原始音频数据合成音频文件_根据音频数据对歌曲类型进行分类

原始音频数据合成音频文件 Over the past few years, streaming services have become the primary means through which most people listen to their favourite music. However, this can mean that users might find it difficult to look for newer music that suits their…

vue实现多页面应用

近期做的vue项目中,需要新增一个系统帮助页面,并且要在新的窗口中打开,但是vue是单页面应用,所以只能对项目进行改造,变成多页面项目。 第一步:在和index.html页面同级下新增一个helpinfo.html,在src目录下新增一个js目…

创建Vue单页面应用的3种方法

创建Vue单页面应用的3种方法 首先下载Vue CLI1.命令行创建(推荐)2.Vue ui(不推荐)3.Vite(未来流行,现在还不稳定) 首先下载Vue CLI 官方链接:https://cli.vuejs.org/zh/guide/insta…

单页和多页应用(vue.js学习笔记)

1.什么是单页面和多页面? 单页: 单页应用将所有内容放在一个页面中,从而使整个页面更加流畅就用户体验而言,单机导航可以定位锚点,快速定位相应的部分,并轻松上下滚动。单页面应用提供的信息和一些主要内容…

Vue-router: 实现纯前端多页面应用(Vuecli+Element UI)

1.简介 1.1 为什么要用Vue-router 我想做一个带导航栏的简单web页面,页面的内容可以随导航栏的点击切换。第一个想法是想用webpack打包出几个页面,然后在每个页面的按钮上添加链接,但是这样做每次页面都要刷新,效率上存在很大问…

vue3+vite配置多页应用

下面是工程的目录结构,里面包含一个index.html作为图表页的应用访问入口,login.html页作为登录页的应用访问入口。 对应的vite.config.js的配置,主要是配置root、base、build这几个属性,具体说明参考下方注释: import …