Django实现音乐网站 ⑽

本文介绍了如何使用Python的Django框架对音乐网站的后台进行优化,包括歌曲类型功能的改进(如下拉菜单显示和编辑)、歌单表功能的增强(如增加歌手名称、描述字段等),并展示了相关代码和数据库模型的调整。
摘要由CSDN通过智能技术生成

使用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.name

    get_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 item

    get_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.name

    get_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.desc

    get_desc.short_description = '歌单描述'


    def get_playnum(self):
        return self.playnum

    get_playnum.short_description = '播放量'

    def get_addtime(self):
        return self.addtime

    get_addtime.short_description = '创建时间'

    def get_updatetime(self):
        return self.updatetime

    get_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,
    )

 效果:

总结

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值