哈尔滨网站优化技术,公司网站建设哪家公司好,广州建设交易中心官网,联盟营销的网络营销方式使用Python Django框架制作一个音乐网站#xff0c; 本篇主要是后台对歌手原有实现功能的基础上进行优化处理。 目录
新增编辑
表字段名称修改
隐藏单曲、专辑数
姓名首字母
安装xpinyin
获取姓名首字母
重写保存方法
列表显示
图片显示处理
引入函数
路径改为显示… 使用Python Django框架制作一个音乐网站 本篇主要是后台对歌手原有实现功能的基础上进行优化处理。 目录
新增编辑
表字段名称修改
隐藏单曲、专辑数
姓名首字母
安装xpinyin
获取姓名首字母
重写保存方法
列表显示
图片显示处理
引入函数
路径改为显示图片
修改列表默认设置
修改列表排序
总结 新增编辑
表字段名称修改
新增、编辑页面字段显示为数据表设计字段改为中文显示。
在Model中直接修改Singler字段增加verbose_name参数。
verbose_nameadmin模式中字段的显示名称。
内容如下
class Singler(models.Model): 歌手表模型 class Meta:verbose_name 歌手verbose_name_plural 歌手name models.CharField(max_length50, help_text请输入歌手名称, verbose_name姓名)first_letter models.CharField(max_length15, help_text请输入歌手名称首字母, verbose_name姓名首字母)# 设置上传位置portrait models.ImageField(upload_toupload_save_path, help_text请上传歌手照片, verbose_name照片)birthday models.DateField(defaultdate.today, help_text请选择歌手生日, blankTrue, verbose_name生日)height models.IntegerField(help_text请输入歌手身高cm, default0, blankTrue, verbose_name身高cm)weight models.IntegerField(help_text请输入歌手体重kg, default0, blankTrue, verbose_name体重kg)constellation models.CharField(max_length50, help_text请输入歌手星座, verbose_name星座)# editableFalse 后台将不再显示single_num models.IntegerField(default0, editableFalse)album_num models.IntegerField(default0, editableFalse)desc models.TextField(help_text请输入歌手简介, verbose_name简介)
效果 隐藏单曲、专辑数
歌手所拥有的单曲数和专辑数应该是添加、删除单曲或专辑时动态计算出的数值不应该是后台添加的之前不会隐藏经过查看表模型参数找到了设置方法。 editable默认值为True
如果值为Fasle则在admin模式下不能改写。 修改歌手表模型单曲数和专辑数字段设置editable参数。
内容如下
single_num models.IntegerField(default0, editableFalse)
album_num models.IntegerField(default0, editableFalse)
刷新后新增歌手详情单曲数和专辑数设置不再显示。 姓名首字母
原有姓名首字母需要自己手动输入改为程序自动通过输入的歌手名称取得姓名首字母。 安装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_insertFalse, force_updateFalse, usingNone,update_fieldsNone): 重写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/{} width100px height100px/,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) cmget_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] 总结
对后台歌手模块进行部分功能优化主要通过新增编辑和列表两方面来进行优化。