[免费]基于Python的在线音乐网站系统(后端Django)【论文+源码+SQL脚本】

大家好,我是python222_小锋老师,看到一个不错的基于Python的在线音乐网站系统(后端Django)【论文+源码+SQL脚本】,分享下哈。

项目视频演示

https://www.bilibili.com/video/BV1U2HczxEL1/

项目介绍

本文设计了一种基于Python的音乐播放网站,为人们提供了方便快捷、即用即搜的音乐搜索播放服务,包括音乐新闻、音乐交流、歌曲信息、歌曲排行、歌手排行等功能等,用户不仅能够方便快捷地查看音乐新闻、还能搜索自己喜爱的音乐歌曲进行播放等。音乐播放网站采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采用Python编程语言,MySQL数据库,Ajax异步交互,根据Ajax异步模式等开发工具,完成了系统的主要模块的页面设计和功能实现。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。

系统展示

部分代码

复制代码
from django.shortcuts import render, redirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.db.models import Q
from index.models import Song, Dynamic


def SearchView(request, page):
    if request.method == 'GET':
        # 搜索歌曲
        search_song = Dynamic.objects.select_related('song').order_by('-dynamic_search').all()[:6]
        # 获取搜索内容,如果kword为空即查询全部歌曲
        kword = request.session.get('kword', '')
        if kword:
            # Q是SQL语句里的or语法
            song_info = Song.objects.values('song_id', 'song_name', 'song_singer', 'song_time').filter(Q(song_name__icontains=kword) | Q(song_singer=kword)).order_by('-song_release').all()
        else:
            song_info = Song.objects.values('song_id', 'song_name', 'song_singer', 'song_time').order_by('-song_release').all()[:50]
        # 分页功能
        paginator = Paginator(song_info, 5)
        try:
            contacts = paginator.page(page)
        except PageNotAnInteger:
            contacts = paginator.page(1)
        except EmptyPage:
            contacts = paginator.page(paginator.num_pages)
        # 添加歌曲搜索次数
        song_exist = Song.objects.filter(song_name=kword)
        if song_exist:
            song_id = song_exist[0].song_id
            dynamic_info = Dynamic.objects.filter(song_id=int(song_id)).first()
            # 判断歌曲动态信息是否存在,存在就在原来基础上加1
            if dynamic_info:
                dynamic_info.dynamic_search += 1
                dynamic_info.save()
            # 动态信息不存在则创建新的动态信息
            else:
                dynamic = Dynamic(dynamic_plays=0, dynamic_search=1, dynamic_down=0, song_id=song_id)
                dynamic.save()
        return render(request, 'search/search.html', locals())
    else:
        # 处理POST请求,并重定向搜索页面。
        request.session['kword'] = request.POST.get('kword', '')
        return redirect('/search/1.html')

from django.db import models


# 歌曲分类表label
class Label(models.Model):
    label_id = models.AutoField('序号', primary_key=True)
    label_name = models.CharField('分类标签', max_length=10)
    def __str__(self):
        return self.label_name
    class Meta:
        # 设置admin界面的显示内容
        verbose_name = '歌曲分类'
        verbose_name_plural = '歌曲分类'

# 歌曲信息表song
class Song(models.Model):
    song_id = models.AutoField('序号', primary_key=True)
    song_name = models.CharField('歌名', max_length=50)
    song_singer = models.CharField('歌手', max_length=50)
    song_time = models.CharField('时长', max_length=10)
    song_album = models.CharField('专辑', max_length=50)
    song_languages = models.CharField('语种', max_length=20)
    song_type = models.CharField('类型', max_length=20)
    song_release = models.CharField('发行时间', max_length=20)
    song_img = models.CharField('歌曲图片', max_length=20)
    song_lyrics = models.CharField('歌词', max_length=50, default='暂无歌词')
    song_file = models.CharField('歌曲文件', max_length=50)
    label = models.ForeignKey('Label', on_delete=models.CASCADE, verbose_name='歌曲分类')
    def __str__(self):
        return self.song_name
    class Meta:
        # 设置admin界面的显示内容
        verbose_name = '歌曲信息'
        verbose_name_plural = '歌曲信息'


# 歌曲动态表dynamic
class Dynamic(models.Model):
    dynamic_id = models.AutoField('序号', primary_key=True)
    dynamic_plays = models.IntegerField('播放次数')
    dynamic_search = models.IntegerField('搜索次数')
    dynamic_down = models.IntegerField('下载次数')
    song = models.ForeignKey('Song', on_delete=models.CASCADE, verbose_name='歌名')
    class Meta:
        verbose_name = '歌曲动态'
        verbose_name_plural = '歌曲动态'


# 歌曲点评论comment
class Comment(models.Model):
    comment_id = models.AutoField('序号', primary_key=True)
    comment_text = models.CharField('内容', max_length=500)
    comment_user = models.CharField('用户', max_length=20)
    comment_date = models.CharField('日期', max_length=50)
    song = models.ForeignKey('Song', on_delete=models.CASCADE, verbose_name='歌名')
    class Meta:
        verbose_name = '歌曲评论'
        verbose_name_plural = '歌曲评论'

源码下载

链接:https://pan.baidu.com/s/1zKh80kmyqP5Gl60zdYWkFQ

提取码:1234

相关推荐
数据狐(Datafox)1 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机1 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6922 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy3 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽3 小时前
真实即粗糙,光滑是伪造
人工智能·python
一次旅行3 小时前
Attention机制从数学到工程:拆解缩放点积+多头注意力|附可运行PyTorch实现与踩坑指南
人工智能·pytorch·python
泡干脆面就番茄3 小时前
NumPy 科学计算完全指南:从数组创建到广播机制
python·numpy
denggun123454 小时前
信号量(DispatchSemaphore vs AsyncSemaphore)、swift协作式线程池 and python信号量
开发语言·python·swift
起光4 小时前
Python类与对象(一)
python
阿童木写作4 小时前
跨马翻译:AI批量图片翻译工具,视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频