Django实现音乐网站 ⑿

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

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

本篇主要是加载静态资源和推荐页-轮播图、推荐歌单功能开发。

目录

加载静态资源

引入jquery.js

引入bootstrap资源文件

创建基类模板样式文件

推荐页开发

轮播图开发

下载

加载swiper

自定义引入继承块设置

使用swiper

设置轮播div宽高

轮播图改活

视图查询轮播图表

模版循环遍历

推荐歌单

查询推荐歌单

模版显示推荐歌单

总结


加载静态资源

引入jquery.js

下载jquery.js文件到static/js目录中。

引入bootstrap资源文件

下载bootstrap资源包,从中取出css、js、font资源文件放置到static相应目录下。

如下图:

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

创建基类模板样式文件

在static/css下创建基类模板样式文件base.css;并在base.html中引用。

内容如下:

*{
    margin:0;
    padding:0;
}

body {
    color:#3b3b3b;
}

a {
    text-decoration:none;
    transition: none;
    border:none;
}

a:hover {
    text-decoration:none;
    transition: none;
}

li {
    list-style:none;
}

#container {
    min-width: 1180px;
    max-width: 1640px;
    padding: 0 120px;
    margin: 0 auto;
}

.header .logo{
    float:left;
    margin-right:14px;
}

.header ul li{
   float:left;
}

.header ul li a {
   display:block;
   height:69px;
   padding:0 14px;
   line-height:67px;
   font-size:20px;
   text-decoration: none;
   color:#3b3b3b;
}

.header ul li a:hover{
   color:#000000;
}

.header ul li a.selected{
   background-color:#ffe443;
   font-weight: bold;
}

.clear {
    clear:both;
}

.footer {
    width:100%;
    height:158px;
    background-color:#1f1f1f;
    text-align:center;
    color:#575757;
    padding-top:24px;
    margin-top: 62px;
}

.swiper {
    width: 100%;
    height: 345px;
    margin-top:5px;
}

.recommend_song_sheet {
    width:100%;
    height:400px;
    margin-top:70px;
    overflow:hidden;
}

.recommend_song_sheet .title {
    height:40px;
    line-height:40px;
    margin-bottom:28px;
    overflow:hidden;
}

.recommend_song_sheet .title .name{
    float:left;
    color:#000000;
    margin-right:20px;
    font-weight:bold;
    font-size: 28px;
}

.recommend_song_sheet .title ul{
    float:left;
}

.recommend_song_sheet .title ul li {
    float:left;
}

.recommend_song_sheet .title ul li a{
    display:block;
    padding:0 20px;
    color:#3b3b3b;
    text-decoration: none;
}

.recommend_song_sheet .title ul li a.now {
    font-weight:bold;
    text-shadow: #FC0 1px 0 10px;
}

.recommend_song_sheet .list {
    width:100%;
}

.recommend_song_sheet .list dl {
    width:263.9px;
    height:352px;
    float:left;
    margin-left:10px;
    cursor: pointer;
}

.recommend_song_sheet .list dl.one {
    width:263.9px;
    height:352px;
    margin-left:0;
}

.recommend_song_sheet .list dt {
    height:266px;
}

.recommend_song_sheet .list dt img{
    width:263.9px;
}

.recommend_song_sheet .list dd .name {
    margin-top: 16px;
    font-size: 16px;
    line-height: 22px;
    font-weight: 400;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    word-break: break-all;
}

.recommend_song_sheet .list dd .count {
    margin-top: 10px;
    color: #999;
}

.recommend_song_sheet .list dd .count i{
    font-size:14px;
}

.recommend_rank {
    margin-top: 70px;
}

.recommend_rank .title {
    height:40px;
    line-height:40px;
    margin-bottom:28px;
    overflow:hidden;
}

.recommend_rank .title .name{
    float:left;
    color:#000000;
    margin-right:20px;
    font-weight:bold;
    font-size: 28px;
}

.recommend_rank .title ul{
    float:left;
}

.recommend_rank .title ul li {
    float:left;
}

.recommend_rank .title ul li a{
    display:block;
    padding:0 20px;
    color:#3b3b3b;
    text-decoration: none;
}

.recommend_rank .list {
    display: flex;
    justify-content: space-between;
}

.recommend_rank .bank {
    width: 18.85%;
    box-shadow: 0 0 30px 0 rgba(65,67,70,.08);
}

.recommend_rank .bank_top {
    position: relative;
    padding-bottom: 54.8%;
    overflow: hidden;
}

.recommend_rank .bank_top .img {
    position: absolute;
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    background: rgba(46,32,60,.7);
    z-index: 10;
}

.recommend_rank .bank_top .img_tip{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    width: 54.3%;
    z-index: 10;
}

.recommend_rank .bank_top .img_bg {
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    transform: translateY(-50%);
}

.recommend_rank .bank_list {
    padding: 28px 20px 26px;
}

.recommend_rank .bank_list li {
    display: flex;
    justify-content: space-between;
}

.recommend_rank .bank_list li .top_img {
    width: 20px;
    height: 33px;
}

.recommend_rank .bank_list .top1 {
    background: url(/static/images/rank_1.png) center 4px no-repeat;
    background-size: auto;
    background-size: 168%;
}

.recommend_rank .bank_list .top2 {
    background: url(/static/images/rank_2.png) center 4px no-repeat;
    background-size: auto;
    background-size: 168%;
}

.recommend_rank .bank_list .top3 {
    background: url(/static/images/rank_3.png) center 4px no-repeat;
    background-size: auto;
    background-size: 168%;
}

.recommend_rank .bank_list .top_index {
    padding-top: 3px;
    display: inline-block;
    font-weight: 600;
    font-size: 16px;
    width: 20px;
    text-align: center;
}

.recommend_rank .bank_list .top_info {
    width: 85%;
    padding-left: 10px;
}

.recommend_rank .bank_list .top_info .song_name:hover {
  font-weight: 600;
}

.recommend_rank .bank_list .top_info .song_name {
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 16px;
  font-weight: 400;
  height: 22px;
  line-height: 22px;
  cursor: pointer;
}

.recommend_rank .bank_list .top_info .singler:hover {
  color: #333;
}

.recommend_rank .bank_list .top_info .singler {
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 4px;
  font-size: 14px;
  font-weight: 300;
  color: #999;
  height: 20px;
  line-height: 20px;
  cursor: pointer;
}

.recommend_singler {
    margin-top: 70px;
}

.recommend_singler .title {
    height:40px;
    line-height:40px;
    margin-bottom:28px;
    overflow:hidden;
}

.recommend_singler .title .name{
    float:left;
    color:#000000;
    margin-right:20px;
    font-weight:bold;
    font-size: 28px;
}

.recommend_singler .title ul{
    float:left;
}

.recommend_singler .title ul li {
    float:left;
}

.recommend_singler .title ul li a{
    display:block;
    padding:0 20px;
    color:#3b3b3b;
    text-decoration: none;
}

.recommend_singler .title ul li a.now {
    font-weight:bold;
    text-shadow: #FC0 1px 0 10px;
}

.recommend_singler .list {
    display: flex;
    justify-content: space-between;
}

.recommend_singler .list .item {
    width: 13%;
    text-align: center;
}

.recommend_singler .list .item .cover {
    position: relative;
    width: 100%;
    padding-bottom: 100%;
    overflow: hidden;
    border-radius: 50%;
    font-size: 0;
    cursor: pointer;
}

.recommend_singler .list .item .cover img{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.recommend_singler .list .item .name {
    position: relative;
    height: 22px;
    font-size: 16px;
    line-height: 22px;
    font-weight: 400;
    margin-top: 17px;
    flex-wrap: nowrap;
    justify-content: center;
    padding: 0 5px;
}

.recommend_singler .list .item .num {
    margin-top: 6px;
    font-size: 12px;
    color: #999;
}

推荐页开发

轮播图开发

使用swiper来处理轮播。

下载

下载Swiper - Swiper中文网

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

加载swiper

需要用到的文件有swiper-bundle.min.js和swiper-bundle.min.css文件。

解压后寻找swiper-bundle.min.js和swiper-bundle.min.css文件,

放置到myMusic/static相应资源目录下。

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

自定义引入继承块设置

在base.html中原有脚本文件引入位置之下设置一个引入js文件继承块,

用来让子页面来自定义继承脚本文件。

内容如下:

<script src="{% static 'js/jquery-3.7.0.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
{% block styleJs %}
{# 子页面引入js文件 #}
{% endblock styleJs %}
使用swiper

在index.html页面引入css和js文件,找两个图片放入images目录中。

先做一个轮播效果,之后改为调用后台数据。

内容如下:

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

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

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

<div class="swiper">
    <div class="swiper-wrapper">
    <div class="swiper-slide"><img src="{% static 'images/1.jpg' %}" alt=""></div>
    <div class="swiper-slide"><img src="{% static 'images/2.jpg' %}" alt=""></div>
</div>
    <!-- 分页器 -->
    <div class="swiper-pagination"></div>

    <!-- 导航按钮 -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>
<!--导航等组件可以放在Swiper容器之外-->
{% endblock content %}


{% block styleJs %}
{# 子页面引入js文件 #}
<script src="{% static 'js/swiper-bundle.min.js' %}"></script>
<script>
    var mySwiper = new Swiper ('.swiper', {
        loop: true, // 循环模式选项

        // 分页器
        pagination: {
            el: '.swiper-pagination',
            clickable: true,// 设置分页器点击切换
        },

        // 前进后退按钮
        navigation: {
            nextEl: '.swiper-button-next',
            prevEl: '.swiper-button-prev',
        },

        // 自动切换
        autoplay: {
            delay: 3000,
            disableOnInteraction: false,
        },
    })
</script>
{% endblock styleJs %}
设置轮播div宽高

在base.css中设置轮播图所在div的宽高。

内容如下:

.swiper {
    width: 100%;
    height: 345px;
    margin-top:5px;
}

效果:

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

轮播图改活

轮播图改为后台提供数据。

视图查询轮播图表

路由之前已经设置,只需要查询轮播图数据并返回给模版。

代码如下:

from django.shortcuts import render
from .models import Carousel


def index(request):
    """ 显示首页 """

    # 获取首页轮播图
    carousel_imgs = Carousel.objects.all()

    return render(request, 'index/index.html', {'carousels': carousel_imgs})
模版循环遍历

把原来前端写死的轮播图改为后端返回数据,通过for循环遍历并加上跳转。

代码如下:

<div class="swiper">
    <div class="swiper-wrapper">
        {% for ca in carousels %}
            <div class="swiper-slide">
                <a href="{{ ca.href }}">
                    <img src="/media/{{ ca.path }}" alt="">
                </a>
            </div>
        {% endfor %}
    </div>
    <!-- 分页器 -->
    <div class="swiper-pagination"></div>
    <!-- 导航按钮 -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>

推荐歌单

模版已经做好,现在需要改为后台提供数据。

这里先确认规则为播放量最多的五个返回给前端。

因为目前播放量增加功能还没做,先把数据表中修改一下播放量。

查询推荐歌单

还是在视图中首页方法中处理;需要排序和分页设置。

代码如下:

from django.shortcuts import render
from .models import Carousel, SongSheet


def index(request):
    """ 显示首页 """

    # 获取首页轮播图
    carousel_imgs = Carousel.objects.all()

    # 推荐歌单
    # 选播放量最多的五个
    songsheets = SongSheet.objects.order_by('-playnum').all()[0:5]

    return render(request, 'index/index.html', {'carousels': carousel_imgs, 'songsheets': songsheets})
模版显示推荐歌单

因为目前还没做歌单详情功能,现在歌单类型和歌单详情跳转先不做;

当前先做首页推荐的显示。

本来想使用enumerate函数取得对象的key属性判断第一个赋值元素属性,结果发现在模版中解析不了;突然想起来循环中forloop.counter属性;这里主要使用了循环和在循环中进行条件判断。

代码如下:

<!--推荐歌单开始-->
<div class="recommend_song_sheet">
    <div class="title">
        <div class="name">推荐歌单</div>
        <ul>
            <li><a href="#" class="now">每日推荐</a></li>
            <li><a href="#">翻唱</a></li>
            <li><a href="#">网络</a></li>
            <li><a href="#">伤感</a></li>
            <li><a href="#">欧美</a></li>
            <li><a href="#">更多></a></li>
        </ul>
    </div>
    <div class="list">
        {% for son in songsheets %}
            {% if forloop.counter == 1 %}
                <dl class="one">
                    <dt><img src="/media/{{ son.cover }}" alt=""></dt>
                    <dd>
                        <p class="name">{{ son.name }}</p>
                        <p class="count"><i class="glyphicon glyphicon-play"></i> {{ son.playnum }}</p>
                    </dd>
                </dl>
            {% else %}
                <dl>
                    <dt><img src="/media/{{ son.cover }}" alt=""></dt>
                    <dd>
                        <p class="name">{{ son.name }}</p>
                        <p class="count"><i class="glyphicon glyphicon-play"></i> {{ son.playnum }}</p>
                    </dd>
                 </dl>
            {% endif %}
        {% endfor %}
    </div>
</div>
<!--推荐歌单结束-->

效果:

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

总结

目前开发比较顺利,费时的主要是前端的样式设置,感觉自己的技术还是偏向于后端方面。

只能是多加练习了。文章来源地址https://www.toymoban.com/news/detail-665435.html

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

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

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

相关文章

  • Django实现音乐网站 ⑶

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

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

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

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

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

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

    使用Python Django框架制作一个音乐网站, 本篇主要是后台对单曲原有功能的基础上进行部分功能实现和显示优化。 目录 新增编辑 歌手下拉显示修改 设置歌曲时长 安装eyed3库 获取mp3时长 歌曲时长字段修改 重写save方法 增加歌手单曲数量 查询歌手单曲数量 列表显示 显示歌手

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

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

    2024年02月11日
    浏览(40)
  • Django实现音乐网站 (21)

    使用Python Django框架做一个音乐网站, 本篇音乐播放器功能完善及原有功能修改。 目录 播放列表修改 视图修改 删除、清空播放器 设置路由 视图处理 修改加载播放器脚本 模板修改 脚本设置 清空功能实现 删除列表音乐 播放列表无数据处理 视图修改 播放音乐与列表同步 修

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

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

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

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

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

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

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

    使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌手原有实现功能的基础上进行优化处理。   目录 新增编辑 表字段名称修改 隐藏单曲、专辑数 姓名首字母 安装xpinyin 获取姓名首字母 重写保存方法 列表显示 图片显示处理 引入函数 路径改为显示图片 修改列表默认

    2024年02月14日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包