Python音乐平台Django实战(三)

1 定义路由列表

项目中设置了6个项目应用,每个项目应用实现不同的网页功能,在开发网页功能之前,首先为各个项目应用设置路由空间,再由各个项目应用的urls.py定义具体的路由信息。打开music的urls.py定义项目的路由列表,在路由列表中定义各个项目应用的路由空间。

代码如下:

from django.contrib import admin
from django.urls import path, re_path, include
# serve() 视图可以用来为你给它的任何目录提供服务。
from django.views.static import serve
from django.conf import settings
​
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('index.urls')),
    path('ranking.html', include('ranking.urls')),
    path('play/', include('play.urls')),
    path('comment/', include('comment.urls')),
    path('search/', include('search.urls')),
    path('user/', include('user.urls')),
    # 定义静态资源的路由信息
    re_path('static/(?P<path>.*)', serve, {'document_root': settings.STATIC_ROOT}, name='static'),
    # 定义媒体资源的路由信息
    re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),
]

上述的路由空间以最简单的方式定义,因为项目的网页数量不多,所以路由空间可以无须设置参数namespace。

由于项目的配置文件settings.py设置媒体资源文件夹media,因此还需要在路由对象urlpatterns中设置媒体资源的路由信息。

2 编写公用模板

在模板文件夹templates中编写公用模板文件base.html,该文件用于定义整个音乐网站平台的网页结构。打开公用模板文件base.html,编写以下网页代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="renderer" content="webkit">
    <meta name="keywords" content="">
    <meta name="description" content="">
    <title>我的音乐</title>
    {% block link %}{% endblock %}
</head>
<body>
    {% block body %}{% endblock %}
    <div class="footer">
    <div class="copyright">
        <p>网站数据信息来源于网络</p>
    </div>
    </div>
</body>
</html>

模板文件base.html定义了模板继承接口link和body,每个接口负责实现不同的功能。接口link用于引入css样式文件、JavaScript脚本文件等静态文件;接口body用于编写网页内容。

3 网站首页

网站首页是整个网站的主页面,从网站的需求设计来看,首页一共实现7个功能:歌曲搜索、轮播图、音乐分类、热门歌曲、新歌推荐、热门搜索个热门下载。

网站首页在index中实现,首先在index的urls.py中定义路由index,路由的HTTP请求由视图函数indexView接收和处理,路由index的定义如下所示:

from django.urls import path
from .views import *
​
urlpatterns = [
    path('', indexView, name='index'),
]

下一步在index的views.py中定义视图函数indexView,视图函数indexView主要实现模型Dynamic、Label和Song的数据查询。

代码实现如下:

from django.shortcuts import render
from .models import *
​
​
def indexView(request):
    songDynamic = Dynamic.objects.select_related('song')
    # 热搜歌曲
    searchs = songDynamic.order_by('-search').all()[:8]
    # 音乐分类
    labels = Label.objects.all()
    # 热门歌曲
    popular = songDynamic.order_by('-plays').all()[:10]
    # 新歌推荐
    recommend = Song.objects.order_by('-release').all()[:3]
    # 热门搜索、热门下载
    downloads = songDynamic
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值