当前位置: 首页 > news >正文

郑州 网站建设有限公司阿里网站

郑州 网站建设有限公司,阿里网站,网易网,甘肃省建设厅官方网站信息网1 歌曲搜索 音乐平台的每个网页顶部都设置了歌曲搜索功能#xff0c;歌曲搜索框以网页表单的形式展示#xff0c;并且以POST请求方式实现歌曲搜索功能#xff0c;搜索结果显示在歌曲搜索页。歌曲搜索页由项目应用search实现#xff0c;首先在search的urls.py中定义路由sea…1 歌曲搜索 音乐平台的每个网页顶部都设置了歌曲搜索功能歌曲搜索框以网页表单的形式展示并且以POST请求方式实现歌曲搜索功能搜索结果显示在歌曲搜索页。歌曲搜索页由项目应用search实现首先在search的urls.py中定义路由search。 1.1 路由定义 from django.urls import path from .views import * urlpatterns [path(int:page.html, searchView, namesearch), ]路由search设置了路由变量page该变量代表某一页的页数因为歌曲的搜索结果具有不确定性通过对搜索结果进行分页处理可以美化和规范网页内容。路由的HTTP请求由视图函数searchView负责接收和处理在search的views.py中定义视图函数searchView。 1.2 视图定义 from django.shortcuts import render, redirect from django.core.paginator import Paginator from django.core.paginator import EmptyPage from django.core.paginator import PageNotAnInteger from django.shortcuts import reverse from django.db.models import Q, F from index.models import *def searchView(request, page):if request.method GET:# 热搜歌曲searchs Dynamic.objects.select_related(song).order_by(-search).all()[:6]# 获取搜索内容如果kword为空就查询全部歌曲kword request.session.get(kword, )if kword:songs Song.objects.filter(Q(name__icontainskword) | Q(singerkword)).order_by(-release).all()else:songs Song.objects.order_by(-release).all()[:50]# 分页功能paginator Paginator(songs, 5)try:pages paginator.page(page)except PageNotAnInteger:pages paginator.page(1)except EmptyPage:pages paginator.page(paginator.num_pages)# 添加歌曲搜索次数if kword:idList Song.objects.filter(name__icontainskword)for i in idList:dynamics Dynamic.objects.filter(song_idi.id)# 判断歌曲动态信息是否存在若存在则在原来的基础上加1if dynamics:dynamics.update(searchF(search) 1)# 若动态信息不存在则创建新的动态信息else:dynamic Dynamic(plays0, search1, download0, song_idi.id)dynamic.save()return render(request, search.html, locals())else:# 处理POST请求并重定向搜索页面request.session[kword] request.POST.get(kword, )return redirect(reverse(search, kwargs{page: 1}))当视图函数searchView接收到路由search的POST请求后它将执行歌曲搜索过程执行过程说明如下 1当用户在歌曲搜索框输入搜索内容并单击“搜索”按钮后程序根据网页表单的属性action所指向的路由地址发送一个POST请求Django接收到请求后将请求信息交给视图函数searchView进行处理。 2如果视图函数searchView收到一个POST请求那么首先将请求参数kword写入会话Session进行存储请求参数kword是歌曲搜索框的搜索内容然后以重定向的方式访问歌曲搜索页。 3通过重定向访问歌曲搜索页等同于向歌曲搜索页发送一个GET请求视图函数searchView首先获取会话Session的数据判断Session是否存在kword。 4如果kword存在就以kword作为查询条件分别在模型Song的字段name和singer中进行模糊查询查询结果根据模型字段release进行降序排列如果kword不存在就查询模型Song的所有歌曲以模型字段release进行降序排列并且只获取前50首的歌曲信息。 5将查询结果进行分页处理以每5首歌为一页的方式进行分页。函数参数page代表某一页的页数它也代表路由变量page。 6根据搜索内容kword查找匹配的歌曲将符合匹配条件的歌曲进行遍历和判断如果歌曲的动态信息存在就对该歌曲的搜索次数累加1否则为歌曲新建一条动态信息并将搜索次数设为1。 7最后将变量searchs和分页对象pages传递给模板文件search.html由模板引擎进行解析并生成相应的网页内容。 1.3 模板定义 当模板文件search.html接收到变量searchs和分页对象pages后模板引擎对模板语法进行解析并转换成网页内容。变量searchs实现歌曲搜索框下方的热搜歌曲分页对象pages实现当前分页的歌曲列表歌分页导航功能。 {% extends base.html %} {% load static %} {% block link %} link relshortcut icon href{% static favicon.ico %} link relstylesheet href{% static css/common.css %} link relstylesheet href{% static css/search.css %} {% endblock %}{% block body %} bodydiv classheadera href/ classlogoimg src{% static image/logo.png %}/adiv classsearch-boxform idsearchForm action{% url search 1 %} methodpost{% csrf_token %}div classsearch-keywordinput idkword namekword typetext classkeyword maxlength120//divinput idsubSerch typesubmit classsearch-button value搜 索 //formdiv idsuggest classsearch-suggest/divdiv classsearch-hot-words{% for s in searchs %}a targetplay href{% url play s.song.id %} {{ s.song.name }}/a{% endfor %}/div/div/div!--end header--div classnav-boxdiv classnav-box-innerul classnav clearfixlia href{% url index %}首页/a/lilia href{% url ranking %} target_blank歌曲排行/a/lilia href{% url home 1 %} target_blank用户中心/a/li/ul/div/div!--end nav-box--!--wrapper--div classwrapper clearfix idwrapperdiv classmod_songlistul classsonglist__headerli classsonglist__header_name歌曲/lili classsonglist__header_author歌手/lili classsonglist__header_time时长/li/ulul classsonglist__list{% for p in pages.object_list %}li classjs_songlist__childdiv classsonglist__itemdiv classsonglist__songnamespan classsonglist__songname_txta href{% url play p.id %} classjs_song targetplay{{ p.name }}/a/span/divdiv classsonglist__artista hrefjavascript:; classsinger_name {{ p.singer }}/a/divdiv classsonglist__time{{ p.time }}/div/div/li{% endfor %}/uldiv classpage-boxdiv classpagebar idpageBar{% if pages.has_previous %}a href{% url search pages.previous_page_number %} classprev target_selfi/i上一页/a{% endif %}{% for p in pages.paginator.page_range %}{% if pages.number p %}span classsel{{ p }}/span{% else %}a href{% url search p %} target_self{{ p }}/a{% endif %}{% endfor %}{% if pages.has_next %}a href{% url search pages.next_page_number %} classnext target_self下一页i/i/a{% endif %}/div/div/div/div /body {% endblock %}
http://www.tj-hxxt.cn/news/138808.html

相关文章:

  • 关键词网站排名软件北京php培训网站建设
  • 宁波住房和城乡建设部网站owasp+网站开发
  • 怎么建设网站赚钱手机韩国展厅设计网站
  • 广东网站建站系统哪家好wordpress+取消边栏
  • 自己做的网站怎么发布到百度广州公司建站模板
  • 开发网站的意义微信小程序在哪里?
  • 上海市建设工程交易服务中心网站wordpress管理员登陆不上
  • 乐辰网站建设wordpress手机端兼容
  • 健身网站开发可行性分析网站制作免费软件
  • 商河网站建设公司手机网站制作平台有哪些
  • 开个免费的网站多少钱手机端模板网站
  • 金牛区建设局网站杭州网站建设报价
  • 广州网站建设制作价格天河建网站
  • 网站内容和备案不一样自助网站建设系统
  • wordpress网站首页链接乱码深圳 网站优化公司排名
  • 网站兼容代码西安有什么好玩的好吃的
  • 怎样进行网站推广东莞市网络seo推广怎么样
  • 柳州企业网站建设价格有没有做网站的博士专业
  • 做团餐 承包食堂的企业网站网站的默认首页
  • 建设部高级职称查询官方网站查邮箱注册的网站
  • 做门户网站价格66建筑网
  • 网站 维护 费用工商注册网站官网
  • wordpress网站注册不了和平手机网站建设
  • 怎么样建设网站网站开发工程师的生活形态
  • ftp里找到的index文件查看网站建设中查外链网站
  • 免费弄空间的网站软文推广营销服务平台
  • 三沙网站建设天津seo标准
  • 给公司做的东西放到自己网站上手机版网站制作费用
  • 江西省建设厅网站资质升级查询移动端网站建设推广方案
  • 外贸soho网站制作中国铁路建设集团公司网站