网站大量收购独家精品文档,联系QQ:2885784924

python-Django项目实战-播放与下载.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

python-Django项目实战-播放与下载

歌曲播放与下载

从网站首页、歌曲排行榜和歌曲有哪些信誉好的足球投注网站得知,每个页面的歌曲信息都设置了歌曲播放的地址链接,只要在页面上单击歌曲名即可访问歌曲播放页。总的来说,歌曲播放页是音乐网站的核心页面,所有页面的歌曲信息都有播放链接,通过播放链接而已访问可以访问歌曲播放页。

定义路由

歌曲播放由项目应用play实现,在play的urls.py中分别定义路由play和download。

路由的定义过程如下:

fromdjango.urlsimportpath

from.viewsimport*

urlpatterns=[

??#歌曲播放页

??path(int:id.html,playView,name=play),

??#歌曲下载

??path(download/int:id.html,downloadView,name=download)

]

视图定义

路由play和download设置路由变量id,该变量是模型Song的主键id,主要用于标记和区分当前播放的歌曲信息。路由play为用户提供在线试听、歌曲下载、歌曲点评链接和相关歌曲推荐,路由download用于实现歌曲下载功能。在play的view.py中分别定义视图函数playView和downloadView。

代码如下:

fromdjango.shortcutsimportrender

fromdjango.httpimportStreamingHttpResponse

fromindex.modelsimport*

?

defplayView(request,id):

??#热搜歌曲

??searchs=Dynamic.objects.select_related(song).order_by(-search).all()[:6]

??#相关歌曲推荐

??type=Song.objects.values(type).get(id=id)[type]

??relevant=Dynamic.objects.select_related(song).filter(song__type=type).order_by(-plays).all()[:6]

??#歌曲信息

??songs=Song.objects.get(id=int(id))

??#播放列表

??play_list=request.session.get(play_list,[])

??exist=False

??ifplay_list:

????foriinplay_list:

??????ifint(id)==i[id]:

????????exist=True

??ifexist==False:

????play_list.append({id:int(id),singer:songs.singer,name:,time:songs.time})

??request.session[play_list]=play_list

??#歌词

??ifsongs.lyrics!=暂无歌词:

????lyrics=str(songs.lyrics.url)[1::]

????withopen(lyrics,r,encoding=utf-8)asf:

??????lyrics=f.read()

??#添加播放次数

??#功能扩展:可使用Session实现每天只添加一次播放次数

??p=Dynamic.objects.filter(song_id=int(id)).first()

??plays=p.plays+1ifpelse1

??Dynamic.objects.update_or_create(song_id=id,defaults={plays:plays})

??returnrender(request,play.html,locals())

?

?

defdownloadView(request,id):

??#添加下载次数

??p=Dynamic.objects.filter(song_id=int(id)).first()

??download=p.download+1ifpelse1

??Dynamic.objects.update_or_create(song_id=id,de

您可能关注的文档

文档评论(0)

189****5221 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档