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

Django实现音乐网站 ⑵

使用Python Django框架制作一个音乐网站,在系列文章1的基础上继续开发,本篇主要是后台歌手表模块开发。

 

目录

表结构设计

歌手表(singer)结构

创建表模型

设置图片上传路径

创建上传文件目录

生成表迁移

执行创建表

后台管理表模型

歌手表模型操作

新增

编辑、删除

优化歌手记录列表

总结


表结构设计

歌手表(singer)结构

字段

类型

注释

id

int(11)

歌手表id

name

varchar(50)

用户名

pinyin

varchar(50)

名称拼音

portrait

varchar(200)

头像链接

first_letter

varchar(15)

名称首字母

gender

tinyint(2)

性别0女 1男

birthday

varchar(20)

生日

height

int(4)

身高(cm)

weight

int(3)

体重(kg)

constellation

varchar(50)

星座

single_num

int(11)

单曲数

album_num

int(11)

专辑数

desc

text(0)

简介

addtime

int(11)

添加时间

updatetime

int(11)

编辑时间

创建表模型

在player工程目录下的models.py中创建歌手表模型。

内容如下:

from django.db import models
from datetime import date, datetime# Create your models here.
class Singler(models.Model):""" 歌手表模型 """name = models.CharField(max_length=50, help_text='请输入歌手名称')first_letter = models.CharField(max_length=15, help_text='请输入歌手名称首字母')# 设置上传位置portrait = models.ImageField(upload_to='uploads/%Y%m%d%H/', help_text='请上传歌手照片')birthday = models.DateField(default=date.today, help_text='请选择歌手生日')height = models.IntegerField(help_text='请输入歌手身高(cm)', default=0, blank=True)weight = models.IntegerField(help_text='请输入歌手体重(kg)', default=0, blank=True)constellation = models.CharField(max_length=50, help_text='请输入歌手星座')single_num = models.IntegerField(default=0)album_num = models.IntegerField(default=0)desc = models.TextField(help_text='请输入歌手简介')addtime = models.DateTimeField(auto_now_add=True)updatetime = models.DateTimeField(auto_now=True)

设置图片上传路径

在myMusic/settings.py中最下方设置。

# 设置文件上传位置
MEDIA_ROOT = 'static/'

创建上传文件目录

在myMusic目录下创建static文件夹。

如图:

生成表迁移

python manage.py makemigrations

执行过程:

执行创建表

python manage.py migrate

创建表结构如下:

CREATE TABLE `player_singler` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,`first_letter` varchar(15) NOT NULL,`portrait` varchar(100) NOT NULL,`birthday` date NOT NULL,`height` int(11) NOT NULL,`weight` int(11) NOT NULL,`constellation` varchar(50) NOT NULL,`single_num` int(11) NOT NULL,`album_num` int(11) NOT NULL,`desc` longtext NOT NULL,`addtime` datetime(6) NOT NULL,`updatetime` datetime(6) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

后台管理表模型

在player目录下admin.py中注册歌手表模型到后台。

from django.contrib import admin
from .models import Singler# Register your models here.
class SinglerAdmin(admin.ModelAdmin):passadmin.site.register(Singler, SinglerAdmin)

歌手表模型操作

新增

点击表模型旁边增加按钮,即可进入新增界面,增加一条新的歌手记录。

写完后,点击最下方的保存按钮;新增成功后,可在列表查看新增记录。

编辑、删除

通过表模型数据列表,点击进入歌手数据详情。

 歌手数据详情可编辑,也可点击下方删除按钮,删除数据。

优化歌手记录列表

修改player/admin.py。

from django.contrib import admin
from .models import Singler# Register your models here.
class SinglerAdmin(admin.ModelAdmin):# 列表页属性def get_name(self):return self.nameget_name.short_description = '歌手名称'def get_portrait(self):return self.portraitget_portrait.short_description = '歌手头像'def get_constellation(self):return self.constellationget_constellation.short_description = '星座'def get_height(self):return str(self.height) + 'cm'get_height.short_description = '身高'def get_weight(self):return str(self.weight) + 'kg'get_weight.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_portrait, get_constellation, get_height, get_weight, get_addtime, get_updatetime]# 过滤器list_filter = ['name', 'constellation']# 搜索search_fields = ['name', 'constellation']# 分页list_per_page = 5admin.site.register(Singler, SinglerAdmin)

 效果:

总结

在django中数据表到后台操作顺序为:

创建表模型->创建表迁移文件->执行表迁移->后台注册。

优化就是后台自定义管理;

比较麻烦的就是,所有表操作修改都需要创建和执行表迁移。

http://www.lryc.cn/news/104444.html

相关文章:

  • Vue 基础语法(二)
  • kafka raft协议
  • 平板光波导中导模的(注意不是泄露模)传播常数β的matlab计算(验证了是对的)
  • JVM面试题--JVM组成
  • 【Golang 接口自动化05】使用yml管理自动化用例
  • 【【STM32学习-3】】
  • 代码随想录第四十八天|198、213、337.打家劫舍
  • js笔记总结
  • 第四章:Spring上
  • 【时频分析,非线性中频】非线性STFT在瞬时频率估计中的应用(Matlab代码实现)
  • MTK平台关机流程和原因(二)
  • 【Python】pyqt6入门到入土系列,非常详细...
  • TCP socket编程
  • HTTP——一、了解Web及网络基础
  • [论文笔记] chatgpt系列 2.6 DeepSpeed-chat 数据集
  • 探究SAM和眼球追踪技术在自动医学图像分割的应用(2023+GazeSAM: What You See is What You Segment)
  • excle中的条件求和SUMIF
  • python-网络爬虫.Request
  • 时序预测 | MATLAB实现GRNN广义回归神经网络时间序列预测(多指标,多图)
  • 如何看待低级爬虫与高级爬虫?
  • 3.分支与循环
  • 面试之多线程案例(四)
  • 抄写Linux源码(Day1:获取并运行 Linux0.11)
  • 大数据_Hadoop_Parquet数据格式详解
  • Docker的安装和部署
  • FPGA项目实现:秒表设计
  • Postgresql源码(109)并行框架实例与分析
  • ES派生类的prototype方法中,不能访问super的解决方案
  • 使用adb通过电脑给安卓设备安装apk文件
  • 113、单例Bean是单例模式吗?