Django实现音乐网站 (21)

这篇具有很好参考价值的文章主要介绍了Django实现音乐网站 (21)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

本篇音乐播放器功能完善及原有功能修改。

目录

播放列表修改

视图修改

删除、清空播放器

设置路由

视图处理

修改加载播放器脚本

模板修改

脚本设置

清空功能实现

删除列表音乐

播放列表无数据处理

视图修改

播放音乐与列表同步

修改设置播放效果

监听媒体播放事件

歌单、专辑、单曲列表播放

音乐播放设置

添加单曲处理

总结


播放列表修改

原来的播放列表只是查询所有歌曲,改为从添加的播放列表中调用数据。

视图修改

只需要查询播放器表所有记录,之后通过单曲、歌手外键查询其他需要信息。

def play_list(request):
    """ 音乐播放器列表 """

    mp3_list = Player.objects.all()
    arr = []
    for item in mp3_list:
        arr.append({
            'id': item.id,
            'cover': str(item.singler.portrait),
            'singer': item.singler.name,
            'singer_id': item.singler_id,
            'song_id': item.singe.id,
            'song_name': item.singe.name,
            'song_path': str(item.singe.path),
            'duration': get_song_duration(int(item.singe.duration)),
        })

    return JsonResponse({'list': arr})

删除、清空播放器

设置路由

# 删除或清空播放器
path('clear_player', views.clear_player, name='clear_player'),

视图处理

清空播放列表和删除播放列表中某个单曲在一个视图处理可通过type来判断。

def clear_player(request):
    """ 删除或清空播放器列表 """

    id = request.GET.get('id')
    type = request.GET.get('type')

    if type == '1':
        # 播放器删除单曲
        Player.objects.filter(pk=id).delete()
    else:
        # 清空所有歌曲
        Player.objects.all().delete()

    res = {'status': 1, 'msg': '操作成功!'}
    return JsonResponse(res)

修改加载播放器脚本

加载播放器方法从匿名方法改为设置方法,以方便其他地方调用。

修改内容如下:

Django实现音乐网站 (21),# Django项目,django,python,后端

模板修改

脚本设置

在base.html最下面设置js脚本请求视图;操作成功后,重新加载音乐播放器。

// 清空播放列表
function clear_player(id, type) {
    $. get("/clear_player", {'id':id, 'type':type}, function (msg) {
        if(msg.status == 1) {
            layer.msg(msg.msg, {icon: 6});
            onPlayer();
        } else {
            layer.msg(msg.msg, {icon: 5});
        }
    });
}
清空功能实现

播放器音乐列表清空列表元素增加调用清空列表方法。

内容如下:

<div class="list_top flex_c">
    <div id="play_title"></div>
    <div class="flex_c">
        <div class="clear_all" onclick="clear_player(0, 2)">
            <i class="glyphicon glyphicon-trash"></i>
            <span class="clear_btn">清空列表</span>
        </div>
        <i class="close glyphicon glyphicon-remove"></i></div>
</div>
删除列表音乐

在音乐播放器列表增加调用删除单曲方法,需要修改play.js中渲染音乐播放器列表处理。

内容如下:

'<i title="删除歌曲" class="glyphicon glyphicon-trash" onclick="clear_player('+ music_list[i].id +', 1)"></i>&nbsp;&nbsp;' +

播放列表无数据处理

当清空播放列表后,渲染出错。

视图修改

在播放列表视图中增加无数据情况的数据返回。

def play_list(request):
    """ 音乐播放器列表 """

    mp3_list = Player.objects.all()
    arr = []
    if mp3_list:
        for item in mp3_list:
            arr.append({
                'id': item.id,
                'cover': '/media/' + str(item.singler.portrait),
                'singer': item.singler.name,
                'singer_id': item.singler_id,
                'song_id': item.singe.id,
                'song_name': item.singe.name,
                'song_path': '/media/' + str(item.singe.path),
                'duration': get_song_duration(int(item.singe.duration)),
            })
    else:
        arr.append({
            'id': 0,
            'cover': '/static/images/s2.jpg',
            'singer': '无歌手',
            'singer_id': 0,
            'song_id': 0,
            'song_name': '无歌曲',
            'song_path': '',
            'duration': '0:00',
        })

    return JsonResponse({'list': arr})

播放音乐与列表同步

在歌单、专辑或者单曲列表点击播放图标进行播放音乐时列表状态同步。

修改设置播放效果

修改play.js中设置音乐播放器列表效果的代码,设置id选择器。

内容如下:

// 设置音乐播放器列表
function set_media_list(music_list) {
    var play_html = '';
    for (var i = 0; i < music_list.length; i++) {
        if (i) {
            play_html += '<div class="flex_c list_item"  id="music_num'+ (i + 1) +
            '" style="pointer-events: auto;">' +
                '<div class="list_idx">' + (i + 1) +
                '<span class="playing" style="display: none">';
        } else {
            play_html += '<div class="flex_c list_item active_cur" id="music_num'+ (i + 1) +
            '" style="pointer-events: auto;">' +
                '<div class="list_idx">' + (i + 1) + '' +
                '<span class="playing">';
        }

监听媒体播放事件

在原有加载播放器事件中增加监听媒体播放事件处理,在这里处理同步音乐播放和列表状态。

内容如下:

// 监听播放器 播放时触发
$player.addEventListener('play', function () {
    $("#music_num"+currentIndex).removeClass('active_cur');
    $("#music_num"+currentIndex).find('.playing').hide();

    $("#music_num"+(currentIndex+1)).addClass('active_cur');
    $("#music_num"+(currentIndex+1)).find('.playing').show();
});

效果:

Django实现音乐网站 (21),# Django项目,django,python,后端

歌单、专辑、单曲列表播放

需要修改设置音乐播放器的脚本的方法和增加对播放操作的事件处理。

要到达的效果为:在歌单、专辑的单曲列表点击全部播放则添加所有单曲并播放第一个歌曲;

而在单曲列表中点击单曲的播放则增加当前单曲到播放列表并播放当前单曲。

音乐播放设置

增加对musicPlay类的点击事件响应处理,

获取按钮上的id和type,来进行单曲、歌单、专辑分别添加处理;

之后设置当前播放音乐显示和路径处理,播放列表显示处理,

音乐播放器播放状态并进行播放。

$('.musicPlay').click(function() {
    var music_dian = $('#music_dian');
    var id = $(this).attr('data-id');
    var type = $(this).attr('data-type');
    var nowNum = 0;
    if(type == 2) {
        // 歌单
        var urll = '/songsheet_player';
    } else if(type == 3) {
        // 专辑
        var urll = '/album_player';
    } else {
        // 单曲
        var urll = '/add_player';
    }
    $. get(urll, {'id':id}, function (msg) {
        if(msg.status == 1) {
            layer.msg(msg.msg, {icon: 6});
            setInit();
        } else {
            layer.msg(msg.msg, {icon: 5});
        }
    });

    if(type == 1) {
        var nowNum = music_list.length - 1;
    }
    // 设置当前播放音乐
    currentIndex = nowNum;
    setMusic();

    // 同步播放列表状态
    var nowDiv = $("#play_list").children('.active_cur');
    nowDiv.find('.playing').hide();
    nowDiv.removeClass('active_cur');
    var newDiv = $("#music_num"+(nowNum+1));
    newDiv.addClass('active_cur');
    newDiv.find('.playing').show();

    // 设置播放器 播放状态
    if (music_dian.attr('class') == 'glyphicon glyphicon-play') {
        music_dian.attr('class', 'glyphicon glyphicon-pause');
    }
    $player.play();
});

添加单曲处理

视图中添加单曲音乐时,重复的单曲不再添加进入单曲中。

def add_player(request):
    """ 添加歌曲到播放器 """

    # 查询相应单曲
    id = request.GET.get('id')
    info = Singe.objects.filter(pk=id).first()
    repeat = Player.objects.filter(singe=id).first()
    if repeat:
        return JsonResponse({'status': 1, 'msg': '添加“%s”成功!' % info.name})

    if info:
        # 加入到播放列表中
        singerDb = Singler.objects.filter(id=info.singler_id).first()
        # 新增单曲
        playDb = Player()
        playDb.name = info.name
        # 建立关联
        playDb.singe = info
        playDb.singler = singerDb
        playDb.save()
        res = {'status': 1, 'msg': '添加“%s”成功!' % info.name}
    else:
        res = {'status': 0, 'msg': '该歌曲不存在,无法添加!'}

    return JsonResponse(res)

总结

本篇内容为音乐播放器表创建后的列表渲染,删除清空播放器功能;

播放音乐列表同步,添加播放音乐等功能实现。文章来源地址https://www.toymoban.com/news/detail-722109.html

到了这里,关于Django实现音乐网站 (21)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django实现音乐网站 ⑷

    使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发, 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 歌曲类型表结构 字段 类型 注释 id

    2024年02月14日
    浏览(34)
  • Django实现音乐网站 ⑶

    使用Python Django框架制作一个音乐网站,在系列文章2的基础上继续开发, 本篇主要是后台单曲、专辑、首页轮播图表模块开发。 目录 后台单曲、专辑表模块开发 表结构设计 单曲表(singe)结构 专辑表(album)结构 创建表模型 创建表 后台注册表模型 后台首页轮播图表模块开

    2024年02月14日
    浏览(30)
  • Django实现音乐网站 ⒆

    使用Python Django框架做一个音乐网站, 本篇主要为排行榜功能及音乐播放器部分功能实现。 目录 推荐排行榜优化 设置歌手、单曲跳转链接 排行榜列表渲染优化 视图修改如下: 模板修改如下: 单曲详情修改 排行榜列表 设置路由 视图处理 模板渲染 设置跳转入口 播放器功能

    2024年02月07日
    浏览(27)
  • Django实现音乐网站 ⑹

    使用Python Django框架制作一个音乐网站, 本篇主要是在添加编辑过程中对后台歌手功能优化及表模型名称修改、模型继承内容。 目录 表模型名称修改 模型继承 创建抽象基类 其他模型继承 更新表结构 歌手新增、编辑优化 表字段名称修改 隐藏单曲数和专辑数 姓名首字母 安装

    2024年02月13日
    浏览(31)
  • Django实现音乐网站 ⑴

    使用Python Django框架制作一个音乐网站。 目录 网站功能模块 安装django 创建项目 创建应用 注册应用 配置数据库 设置数据库配置 设置pymysql库引用 创建数据库 创建数据表 生成表迁移文件 执行表迁移 后台管理 创建管理员账户 启动服务器 登录网站 配置时区 配置语言  总结

    2024年02月15日
    浏览(28)
  • Django实现音乐网站 ⑼

    使用Python Django框架制作一个音乐网站, 本篇主要是后台对专辑、首页轮播图原有功能的基础上进行部分功能实现和显示优化。 目录 专辑功能优化 新增编辑 专辑语种改为下拉选项 添加单曲优化显示 新增单曲多选 更新歌手专辑数、专辑单曲数 获取歌手专辑数 保存处理专辑

    2024年02月13日
    浏览(27)
  • Django实现音乐网站 ⑾

    使用Python Django框架制作一个音乐网站, 本篇主要是前端开发前的一些必要配置和首页展示开发。   目录 配置应用路由 创建应用路由文件 应用路径加入项目路径 创建项目模板 创建项目及应用模板路径 设置模板路径 设置静态资源路径 创建静态资源路径 配置静态资源路径

    2024年02月12日
    浏览(29)
  • Django实现音乐网站 ⑸

    使用Python Django框架制作一个音乐网站, 本篇主要是配置媒体资源设置。 目录 配置介绍 设置媒体资源 创建媒体资源目录 修改settings.py 注册媒体资源路由 总结 静态资源是指项目配置的js/css/image等系统常用文件。对于一些经常变动的资源,通常放在媒体资源文件夹,比如歌手

    2024年02月14日
    浏览(33)
  • Django实现音乐网站 ⒁

    使用Python Django框架制作一个音乐网站, 本篇主要是歌手页-全部歌手页功能开发。 目录 分出首页样式内容 创建首页样式文件 首页引入样式文件 全部歌手列表 创建路由 显示视图 引入分页实现库 视图方法 创建歌手首页 增加歌手跳转 导航条改活 首页增加导航条 歌手页增加

    2024年02月10日
    浏览(30)
  • Django实现音乐网站 ⒀

    使用Python Django框架制作一个音乐网站, 本篇主要是推荐页-推荐排行榜、推荐歌手功能开发。 目录 推荐页开发 推荐排行榜 单曲表增加播放量 表模型增加播放量字段 执行表操作 模板中显示外键对应值 表模型外键设置 获取外键对应模型值 推荐排行榜视图 推荐排行榜模板 推

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包