Django实现音乐网站 ⒁

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

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

本篇主要是歌手页-全部歌手页功能开发。

目录

分出首页样式内容

创建首页样式文件

首页引入样式文件

全部歌手列表

创建路由

显示视图

引入分页实现库

视图方法

创建歌手首页

增加歌手跳转

导航条改活

首页增加导航条

歌手页增加导航条

歌手首字母搜索

路由增加参数

视图字母搜索

模板字母搜索

筛选无数据处理

修改歌手跳转链接

总结


分出首页样式内容

创建首页样式文件

把首页样式内容从基础样式文件中移动出来,独立创建index.css文件。

Django实现音乐网站 ⒁,# Django项目,django,python,后端

首页引入样式文件

在idnex.html引入index.css文件,防止首页样式设置影响其他页面样式。

内容如下:

{% extends 'common/base.html' %}
{% load static %}

{% block title %}我的音乐{% endblock title %}

{% block content %}
<link rel="stylesheet" href="{% static 'css/index.css' %}">
<link rel="stylesheet" href="{% static 'css/swiper-bundle.min.css' %}">

全部歌手列表

创建路由

在player/urls.py中在原有路由下增加新路由,并设置分页参数page。

path('singer/<int:page>', views.singer, name='singer'),

显示视图

在player/views.py中创建歌手模块首页视图方法。

引入分页实现库
from django.core.paginator import Paginator
视图方法

处理字母列表这个很简单。关键在于全部歌手列表,先获取歌手列表数据,然后通过分页组件处理成分页数据,最后返回给模板。

内容如下:

def singer(request, page):
    """ 歌手列表 """

    # 字母列表
    letters = [chr(i) for i in range(ord('A'), ord('Z') + 1)]

    # 所有歌手列表
    singlerList = Singler.objects.all().order_by('-singe_num')

    # 实例化Paginator 每页显示24条
    paginator = Paginator(singlerList, 24)
    # 获取当前页码数据
    res = paginator.page(page)

    return render(request, 'singer/index.html', {
        'letters': letters,
        'singlerList': res
    })

创建歌手首页

在templates中创建singer文件夹,并在文件夹中创建index.html文件。

内容如下:

{% extends 'common/base.html' %}
{% load static %}

{% block title %}我的音乐-歌手{% endblock title %}

{% block content %}
<link rel="stylesheet" href="{% static 'css/singer.css' %}">
<!--分类筛选列表开始-->
<div class="nav_list">
    <ul class="nav_1">
        <li class="active"><a href="#" class="first">热门</a></li>
        {% for lname in letters %}
            <li><a href="{% url 'player:singer' 1 lname %}">{{lname}}</a></li>
        {% endfor %}
        <li><a href="{% url 'player:singer' 1 '#' %}">#</a></li>
    </ul>
</div>
<!--分类筛选列表结束-->

<!--歌手列表开始-->
<div class="singer_list">
    <div class="list_max">
        {% for item in singlerList %}
            {% if forloop.counter < 6 %}
                <div class="item">
                    <div class="cover">
                        <img src="/media/{{item.portrait}}" alt="">
                    </div>
                    <p class="name"><a href="{% url 'player:singer_detail' item.id %}">{{item.name}}</a></p>
                    <p class="num">{{item.singe_num}}首歌曲</p>
                </div>
            {% elif forloop.counter == 7 %}
                </div><div class="list_min">
                <div class="item">
                    <div class="cover">
                        <img src="/media/{{item.portrait}}" alt="">
                    </div>
                    <p class="name"><a href="{% url 'player:singer_detail' item.id %}">{{item.name}}</a></p>
                </div>
            {% else %}
                <div class="item">
                    <div class="cover">
                        <img src="/media/{{item.portrait}}" alt="">
                    </div>
                    <p class="name"><a href="{% url 'player:singer_detail' item.id %}">{{item.name}}</a></p>
                </div>
            {% endif %}
        {% endfor %}
    </div>
</div>

{% if list_num < 1 %}
<!--设置无数据内容-->
<div class="nodata flex_c">
    <div class="inner">
        <img src="{% static 'images/nodata.png' %}"
             alt="" class="nodata_img">
        <div class="tip"><p>暂无相关数据</p></div>
    </div>
</div>
{% endif %}

{% if list_num > 1 %}
<!--设置分页页码-->
<div class="page">
    <i class="li-page glyphicon glyphicon-menu-left notPointer"></i>
    <ul>
        {% for index in singlerList.paginator.page_range %}
            {% if singlerList.number == index %}
                <li><a href="#" class="notCursor currentPage">{{index}}</a></li>
            {% else %}
                <li><a href="{% url 'player:singer' index %}">{{index}}</a></li>
            {% endif %}
        {% endfor %}
    </ul>
    <i class="glyphicon glyphicon-menu-right li-page"></i>
</div>
{% endif %}
<!--歌手列表开始-->
{% endblock content %}

增加歌手跳转

修改header.html文件中歌手跳转超链接。

内容如下:

<li><a href="javascript:void(0)" class="selected">歌手</a></li>

导航条改活

想了想还是把导航条改为每个页面,而不是作为公共部分。

首页增加导航条

基础模板中去掉导航头,并把导航条内容移动到首页原内容之上。

内容如下:

{% extends 'common/base.html' %}
{% load static %}

{% block title %}我的音乐{% endblock title %}

{% block content %}
<link rel="stylesheet" href="{% static 'css/index.css' %}">
<link rel="stylesheet" href="{% static 'css/swiper-bundle.min.css' %}">

<!--导航条开始-->
<div class="header">
    <img src="{% static 'images/logo.png' %}" class="logo" alt="">
    <ul>
        <li><a href="javascript:void(0)" class="selected">推荐</a></li>
        <li><a href="javascript:void(0)">排行榜</a></li>
        <li><a href="{% url 'player:singer' 1 %}">歌手</a></li>
        <li><a href="javascript:void(0)">单曲</a></li>
        <li><a href="javascript:void(0)">歌单</a></li>
    </ul>
</div>
<!--导航条结束-->
歌手页增加导航条

在分类筛选列表模块之上增加导航条。

内容如下:

<!--导航条开始-->
<div class="header">
    <img src="{% static 'images/logo.png' %}" class="logo" alt="">
    <ul>
        <li><a href="{% url 'player:index' %}">推荐</a></li>
        <li><a href="javascript:void(0)">排行榜</a></li>
        <li><a href="javascript:void(0)" class="selected">歌手</a></li>
        <li><a href="javascript:void(0)">单曲</a></li>
        <li><a href="javascript:void(0)">歌单</a></li>
    </ul>
</div>
<!--导航条结束-->

歌手首字母搜索

全部歌手列表增加首字母筛选条件,下面就开始实现。

路由增加参数

在原有分页参数后增加字母搜索参数。

path('singer/detail/<int:id>/<str:name>', views.singer_detail, name='singer_detail'),
视图字母搜索

增加name参数接收字母值,如果是#则获取所有歌手列表,其他字母查询相应歌手列表。

def singer(request, page, name):
    """ 歌手列表 """

    # 字母列表
    letters = [chr(i) for i in range(ord('A'), ord('Z') + 1)]

    # 是否搜索首字母
    if name != '#':
        # 符合首字母的歌手列表
        singlerList = Singler.objects.filter(first_letter=name).order_by('-singe_num')
    else:
        # 所有歌手列表
        singlerList = Singler.objects.all().order_by('-singe_num')

    # 实例化Paginator 每页显示24条
    paginator = Paginator(singlerList, 24)
    # 获取当前页码数据
    res = paginator.page(page)

    return render(request, 'singer/index.html', {
        'letters': letters,
        'singlerList': res,
        'list_num': len(singlerList)
    })
模板字母搜索

全部歌手页链接增加字母筛选条件。

<div class="nav_list">
    <ul class="nav_1">
        <li class="active"><a href="#" class="first">热门</a></li>
        {% for lname in letters %}
            <li><a href="{% url 'player:singer' 1 lname %}">{{lname}}</a></li>
        {% endfor %}
        <li><a href="{% url 'player:singer' 1 '#' %}">#</a></li>
    </ul>
筛选无数据处理

在首页条件筛选无数据的情况处理,出现无数据提示,隐藏分页列表。

{% if list_num < 1 %}
<!--设置无数据内容-->
<div class="nodata flex_c">
    <div class="inner">
        <img src="{% static 'images/nodata.png' %}"
             alt="" class="nodata_img">
        <div class="tip"><p>暂无相关数据</p></div>
    </div>
</div>
{% endif %}

{% if list_num > 1 %}
<!--设置分页页码-->
<div class="page">
    <i class="li-page glyphicon glyphicon-menu-left notPointer"></i>
    <ul>
        {% for index in singlerList.paginator.page_range %}
            {% if singlerList.number == index %}
                <li><a href="#" class="notCursor currentPage">{{index}}</a></li>
            {% else %}
                <li><a href="{% url 'player:singer' index %}">{{index}}</a></li>
            {% endif %}
        {% endfor %}
    </ul>
    <i class="glyphicon glyphicon-menu-right li-page"></i>
</div>
{% endif %}
修改歌手跳转链接

原有跳转歌手的链接需要添加参数,已经无法使用。

<li><a href="{% url 'player:singer' 1 '#' %}">歌手</a></li>

总结

又来更新django音乐网站项目了, 最近一直比较忙,零零碎碎往前推进一点。

本篇主要是歌手页-全部歌手展示页面的开发,其中关键点在于分页和条件筛选的实现。文章来源地址https://www.toymoban.com/news/detail-686380.html

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

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

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

相关文章

  • Django实现音乐网站 ⑷

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

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

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

    2024年02月11日
    浏览(31)
  • 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框架制作一个音乐网站, 本篇主要是歌手页-全部歌手页功能开发。 目录 分出首页样式内容 创建首页样式文件 首页引入样式文件 全部歌手列表 创建路由 显示视图 引入分页实现库 视图方法 创建歌手首页 增加歌手跳转 导航条改活 首页增加导航条 歌手页增加

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

    使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化 新增编辑

    2024年02月13日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包