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

Django实现音乐网站 ⑺

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

本篇主要是后台对歌手原有实现功能的基础上进行优化处理。

 

目录

新增编辑

表字段名称修改

隐藏单曲、专辑数

姓名首字母

安装xpinyin

获取姓名首字母

重写保存方法

列表显示

图片显示处理

引入函数

路径改为显示图片

修改列表默认设置

修改列表排序

总结


 

新增编辑

表字段名称修改

新增、编辑页面字段显示为数据表设计字段,改为中文显示。

在Model中直接修改Singler字段,增加verbose_name参数。

verbose_name:admin模式中字段的显示名称。

内容如下:

class Singler(models.Model):""" 歌手表模型 """class Meta:verbose_name = '歌手'verbose_name_plural = '歌手'name = models.CharField(max_length=50, help_text='请输入歌手名称', verbose_name='姓名')first_letter = models.CharField(max_length=15, help_text='请输入歌手名称首字母', verbose_name='姓名首字母')# 设置上传位置portrait = models.ImageField(upload_to=upload_save_path, help_text='请上传歌手照片', verbose_name='照片')birthday = models.DateField(default=date.today, help_text='请选择歌手生日', blank=True, verbose_name='生日')height = models.IntegerField(help_text='请输入歌手身高(cm)', default=0, blank=True, verbose_name='身高(cm)')weight = models.IntegerField(help_text='请输入歌手体重(kg)', default=0, blank=True, verbose_name='体重(kg)')constellation = models.CharField(max_length=50, help_text='请输入歌手星座', verbose_name='星座')# editable=False 后台将不再显示single_num = models.IntegerField(default=0, editable=False)album_num = models.IntegerField(default=0, editable=False)desc = models.TextField(help_text='请输入歌手简介', verbose_name='简介')

效果:

 

隐藏单曲、专辑数

歌手所拥有的单曲数和专辑数,应该是添加、删除单曲或专辑时动态计算出的数值,不应该是后台添加的,之前不会隐藏,经过查看表模型参数找到了设置方法。

editable:默认值为True;

如果值为Fasle,则在admin模式下不能改写。

修改歌手表模型单曲数和专辑数字段,设置editable参数。

内容如下:

single_num = models.IntegerField(default=0, editable=False)
album_num = models.IntegerField(default=0, editable=False)

刷新后,新增歌手详情单曲数和专辑数设置不再显示。

姓名首字母

原有姓名首字母需要自己手动输入,改为程序自动通过输入的歌手名称取得姓名首字母。

安装xpinyin

需要下载三方库,安装命令:

pip install xpinyin

获取姓名首字母

在player/models.py中处理获取首字母并设置入库操作。

from xpinyin import Pinyindef get_first_letter(name):""" 获取姓名中的首字母 """obj = Pinyin()name_pinyin = obj.get_pinyin(name, '')return name_pinyin[0]

重写保存方法

在Singler类中,重写父类保存方法,增加设置歌手姓名首字母。

并把首字母字段设置为admin不可编辑。

class Singler(models.Model):""" 歌手表模型 """......def save(self, force_insert=False, force_update=False, using=None,update_fields=None):""" 重写save方法 """self.first_letter = get_first_letter(self.name)super().save()

 

列表显示

图片显示处理

修改后台歌手表,在player中的admins.py中的SinglerAdmin。

需要使用format_html()函数。

 

引入函数

from django.utils.html import format_html

路径改为显示图片

class SinglerAdmin(admin.ModelAdmin):# 列表页属性def get_name(self):return self.nameget_name.short_description = '歌手名称'def get_portrait(self):return format_html('<img src="/{}" width="100px" height="100px"/>',self.portrait,)

原因:django从view向template传递HTML字符串的时候,django默认不渲染此HTML,原因是为了防止这段字符串里面有恶意攻击的代码。所以要把列表的图片路径改为显示图片,需要使用函数,通过函数的{}占位符,把图片路径赋值给HTML元素img。

效果:

修改列表默认设置

适用于列表某字段为空时,设置显示内容。

比如歌手的身高体重都为默认0时。

 

修改player/admin.py中对身高和体重的显示处理。

内容如下:

def get_height(self):if self.height < 1:return '——'else:return str(self.height) + 'cm'get_height.short_description = '身高'def get_weight(self):if self.weight < 1:return '——'else:return str(self.weight) + 'kg'

效果:

修改列表排序

通过Meta类来给模型赋予元数据,设定ordering排序。

class Singler(models.Model):""" 歌手表模型 """class Meta:verbose_name = '歌手'verbose_name_plural = '歌手'# 正序ordering = ['first_letter']# 倒序# ordering = ['-first_letter']

总结

对后台歌手模块进行部分功能优化,主要通过新增编辑和列表两方面来进行优化。

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

相关文章:

  • PO、DTO和VO的区别
  • ReadableStream流的js处理
  • 图扑软件入选 2023 中国信通院“铸基计划”全景图
  • Go Fyne:一种现代的,跨平台的 GUI 开发工具集
  • React Dva 操作models中的subscriptions讲述监听
  • 标准化归一化 batch norm, layer norm, group norm, instance norm
  • Zabbix监控系统详解及配置
  • 【100天精通python】Day29:文件与IO操作_XML文件处理
  • 人工智能的未来:探索下一代生成模型
  • C++ 运算符重载为非成员函数
  • [国产MCU]-BL602开发实例-定时器
  • re学习(29)攻防世界-CatFly(复原反汇编)
  • Android WIFI-概率性不能自连
  • 用Python批量复制文件,方法有9种,方便快捷
  • 《凤凰架构》第一章——服务架构演进史
  • 【iPhone】手机还有容量,拍视频却提示 iPhone 储存空间已满
  • pycharm中opencv库导入 cv2. 无函数提示跳出解决方法
  • week3
  • LeetCode28.找出字符串中第一个匹配项的下标
  • 爬虫009_字符串高级_替换_去空格_分割_取长度_统计字符_间隔插入---python工作笔记028
  • Windows 安装Tensorflow2.1、Pycharm开发环境
  • 【javaScript】数组的常用方法(自用记忆版)
  • 全新二开美化版UI好看的社区源码下载/反编译版
  • Docker 发布一个springboot项目
  • 办公信息系统安全基本技术要求
  • 有效管理IT问题的5个原则
  • 【MongoDB】解决ProxmoxVE下CentOS7虚拟机安装MongoDB6后启动失败的问题
  • MySQL 事务原理:事务概述、隔离级别、MVCC
  • useEffect从入门到入土
  • 第三章 图论 No.6负环之01分数规划与特殊建图方式