django_music中歌曲排行榜ranking中的urls和views

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.rankingView,name='ranking'),
    ##设置通用视图的url地址,url的处理由views中的RankingList执行
    ##as_view:
    #根据请求方式的不同(post、get),来调用views.py文件中不同的方法
    # (例如:post请求的话就调用redirect(),
    # get请求的话就调用 render()。
    path('.list',views,RankingList.as_view(),name=rankingList),
]

views.py

from django.shortcuts import render

# Create your views here.
from index.models  import *
def rankingView(request):
    ##搜索歌曲
    ##通过歌曲的搜索次数进行降序查询,由Django内置的select_related方法实现模型Song和Dynamic的数据查询
    search_song=Dynamic.objects.select_related('song').order_by('-dynamic_search').all[:4]
    ##歌曲分类列表
    ##对song_type   distinct去重操作
    All_list=Song.objects.values('song_type').distinct
    ##热门列表信息
    ##若GET请求为空,则对全部歌曲进行筛选,获取播放次数再前10的歌曲;
    ##若请求不问空则根据请求内容进行筛选,获取播放再前10的歌曲
    song_type=request.GET.get('type','')
    if  song_type:
        song_type=Dynamic.objects.select_related('song').filter(song_type=song_type).order_by('-dynamic_plays').all()[:10]
    else:
        song_info=Dynamic.objects.select_related('song').order_by('-dynamic_plays').all()[:10]
    return render(request,'ranking.html',locals())
  class  RankingList(ListView):
        ##content_object_name设置HTML模版的某一个变量名称
        content_object_name='song_info'
        ##设置模版文件
        template_name = 'ranking.html'
        ##查询变量song_info的数据
        def  get_queryset(self):
            ##获取请求参数
            song_type=self.request.GET.get('type','')
            if song_type:
                song_info=Dynamic.objects.select_related('song').filter(song__song_type=song_type).order_by('-dynamic_plays').all()[:10]
            else:
                song_info=Dynamic.objects.select_related('song').order_by('-dynamic_plays').all()[:10]
            return song_info
        ##添加其他变量
        def get_context_data(self, *, object_list=None, **kwargs):
            ##super()实例化get_context_data这个方法
            context=super().get_context_data(**kwargs)
            ##搜索歌曲
            context['search_song']=Dynamic.objects.select_related('song').order_by('-dynamic_search').all[:4]
            ##所有歌曲分类
            context['All_list']=Song.objects.values('song_type').distinct()
            return context  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值