使用Python Django框架制作一個(gè)音樂網(wǎng)站,
本篇主要是后臺對專輯、首頁輪播圖原有功能的基礎(chǔ)上進(jìn)行部分功能實(shí)現(xiàn)和顯示優(yōu)化。
目錄
專輯功能優(yōu)化
新增編輯
專輯語種改為下拉選項(xiàng)
添加單曲優(yōu)化顯示
新增單曲多選
更新歌手專輯數(shù)、專輯單曲數(shù)
獲取歌手專輯數(shù)
保存處理專輯數(shù)和單曲數(shù)
列表顯示
顯示專輯封面
顯示專輯所屬歌手
首頁輪播圖功能優(yōu)化
字段顯示優(yōu)化
記錄列表顯示圖片
總結(jié)
專輯功能優(yōu)化
新增編輯
專輯語種改為下拉選項(xiàng)
修改專輯表模型Album 專輯語種字段,使用choices參數(shù)。
langs = [('國語', '國語'), ('普通話', '普通話'), ('英語', '英語'), ('日韓', '日韓')]
single_lang = models.CharField('專輯語種', max_length=50, choices=langs, help_text='請選擇專輯語種')
?效果:
添加單曲優(yōu)化顯示
需要在添加專輯時(shí),單曲選項(xiàng)顯示為單曲名稱;
還是去修改表模型,需要給單曲表設(shè)置返回格式。
單曲表模型增加str方法
def __str__(self):
return self.name
新增單曲多選
添加或編輯數(shù)據(jù)時(shí),選擇單曲可通過ctrl鍵來實(shí)現(xiàn)多選。
?查看數(shù)據(jù)庫表
更新歌手專輯數(shù)、專輯單曲數(shù)
在新增專輯后,同步更新所屬歌手擁有專輯數(shù)量。
在player/models.py中修改。
獲取歌手專輯數(shù)
def get_album_singler_num(singler_id):
"""
獲取專輯表中所屬歌手?jǐn)?shù)
:param singler_id:
:return:
"""
return Album.objects.filter(singler_id=singler_id).count()
保存處理專輯數(shù)和單曲數(shù)
在專輯表模型中重寫保存方法。
單曲數(shù)通過Singe字段獲取,是一個(gè)set類型;使用內(nèi)置方法len計(jì)算數(shù)量。
?重寫save方法
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
""" 重寫save方法 處理單曲數(shù)和歌手專輯數(shù) """
super().save()
# 獲取選中的單曲字典
sing_set = self.Singe.all()
single_num = len(sing_set)
# 更新單曲數(shù)
self.single_num = single_num
# 獲取所屬歌手專輯數(shù)
album_num = get_album_singler_num(self.singler_id)
super().save()
# 更新歌手表-專輯數(shù)
Singler.objects.filter(pk=self.singler_id).update(album_num=album_num)
列表顯示
顯示專輯封面
默認(rèn)顯示的是專輯封面路徑。
修改player/admin.py中專輯后臺類中封面自定義返回。
內(nèi)容如下:
def get_cover(self):
return format_html('<img src="/media/{}" width="100px" height="100px"/>'.format(self.cover))
效果:
顯示專輯所屬歌手
默認(rèn)列表顯示的專輯所屬歌手為外鍵id,需要顯示為歌手名稱。
修改player/admin.py中專輯后臺類中對歌手外鍵id返回,使用之前單曲顯示歌手方法即可。
內(nèi)容如下:
def get_singler_id(self):
return get_singler_name(self.singler_id)
get_singler_id.short_description = '歌手'
效果:
首頁輪播圖功能優(yōu)化
字段顯示優(yōu)化
修改player/models.py文件中,首頁輪播圖表模型中字段顯示為設(shè)定的內(nèi)容。
內(nèi)容如下:
class Carousel(models.Model):
""" 首頁輪播圖 """
class Meta:
verbose_name = '首頁輪播'
verbose_name_plural = '首頁輪播'
path = models.ImageField(
'輪播圖',
upload_to=upload_save_path,
help_text='請選擇上傳首頁輪播圖'
)
href = models.CharField(
'跳轉(zhuǎn)路徑',
max_length=100,
help_text='請輸入點(diǎn)擊圖片后跳轉(zhuǎn)路徑'
記錄列表顯示圖片
修改player/admin.py文件;展示輪播圖列表中顯示路徑改為顯示圖片,
還是通過format_html。
內(nèi)容如下:
class CarouselAdmin(admin.ModelAdmin):
""" 后臺首頁輪播圖類 """
def get_path(self):
return format_html(
'<img src="/media/{}" width="200px" height="100px"/>',
self.path,
)
get_path.short_description = '圖片路徑'
def get_href(self):
return self.href
get_href.short_description = '跳轉(zhuǎn)路徑'
# 顯示字段
list_display = ['id', get_path, get_href]
效果:
文章來源:http://www.zghlxwxcb.cn/news/detail-640314.html
總結(jié)
操作后臺管理自定義時(shí),目前主要通過兩方面來改變,一個(gè)是表模型;另一個(gè)是通過后臺類。文章來源地址http://www.zghlxwxcb.cn/news/detail-640314.html
到了這里,關(guān)于Django實(shí)現(xiàn)音樂網(wǎng)站 ⑼的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!