tornado

1,urls.py

import config
import os
from views.view import IndexHadnler,SearchHadnler,SearchresHadnler
class Application(tornado.web.Application):
def __init__(self):
heandlers = [
(r'/',IndexHadnler),
(r'/search',SearchHadnler),
(r'/search_res/(?P<page>\d*)',SearchresHadnler),
# (r'/pay',PayHadnler)
] super(Application,self).__init__(heandlers,**config.settings,address='0.0.0.0')

2,实现分页功能及展示

class Pagination:
"""
分页
""" def __init__(self, current_page='1', page_item=1):
all_page, c = divmod(page_item, 5)
if c > 0:
all_page += 1
try:
current_page = int(current_page)
except:
current_page = 1
if current_page < 1:
current_page = 1 self.current_page = current_page # 当前页
self.all_page = all_page # 总页数 @property
def start(self):
"""
显示数据的起点索引
:return:
"""
return (self.current_page - 1) * 5 @property
def end(self):
"""
显示数据的末尾索引
:return:
"""
return self.current_page * 5 def page_num_show(self, baseurl):
"""
写入{% raw str_page %}模板中的内容
:param baseurl: 该段代码不仅可以在/index/中使用,也可以在/home/等等页码使用,
:return: 返回一段字符串形式的html代码块,包括首页,页码数,上一页等等内容
"""
# 计算9个页码的起始索引
list_page = []
if self.current_page <= 4:
s = 0
e = min(self.all_page, 9)
elif self.current_page > self.all_page - 4:
s = max(0, self.all_page - 9)
e = self.all_page
else:
s = self.current_page - 5
e = self.current_page + 4
# 首页
first_page = '<a href="%s1">首页</a>' % (baseurl)
list_page.append(first_page) # 上一页current_page-1
if self.current_page <= 1:
prev_page = '<a href="javascript:void(0);">上一页</a>'
else:
prev_page = '<a href="%s%s">上一页</a>' % (baseurl, self.current_page - 1)
list_page.append(prev_page) #9个页码数
for p in range(s, e):
if p + 1 == self.current_page:
temp = '<a href="%s%s" class="active">%s</a>' % (baseurl, p + 1, p + 1)
list_page.append(temp)
else:
temp = '<a href="%s%s">%s</a>' % (baseurl, p + 1, p + 1)
list_page.append(temp) # 下一页next_page+1
if self.current_page >= self.all_page:
next_page = '<a href="javascript:void(0);">下一页</a>'
else:
next_page = '<a href="%s%s">下一页</a>' % (baseurl, self.current_page + 1)
list_page.append(next_page) # 尾页
last_page = '<a href="%s%s">尾页</a>' % (baseurl, self.all_page)
list_page.append(last_page) # # 页面跳转
# jump = """<input type="text"/><a οnclick="Jump('%s',this);">go</a>""" % (baseurl,)
# script = """<script>
# function Jump(url,self){
# var v=self.previousElementSibling.value;
# if (v.trim().length>0){
# location.href=url+v;
# }
# }
# </script>"""
# list_page.append(jump)
# list_page.append(script) str_page = "".join(list_page)
return str_page class SearchresHadnler(BaseHandler):
async def get(self,page):
page_obj = Pagination(page, len(info_res))
# 当前页显示的数据
current_list = info_res[page_obj.start:page_obj.end]
# 当前页显示的页码数相关html代码
str_page = page_obj.page_num_show('/search_res/')
self.render('info.html', info=current_list, current_page=page_obj.current_page, str_page=str_page)

3,info.html

<!DOCTYPE html>
<!-- <html lang="en"> -->
<link rel="stylesheet" type="text/css" href="../static/top/gameadmin/libs/aui/css/aui.css" />
<link rel="stylesheet" type="text/css" href="../static/top/gameadmin/libs/aui/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="../static/top/gameadmin/libs/aui/css/bootstrap-theme.min.css" />
<link type="text/css" rel="stylesheet" href="../static/top/gameadmin/css/jquery.dataTables.min.css">
<link href="../static/top/gameadmin/css/H-ui.min.css" rel="stylesheet" type="text/css" />
<link href="../static/top/gameadmin/css/H-ui.admin.css" rel="stylesheet" type="text/css" />
<script src="../static/top/gameadmin/libs/jquery-1.12.1.min.js" ></script>
<script src="../static/top/gameadmin/libs/bootstrap.min.js" ></script>
<script src="../static/top/gameadmin/libs/axios.js" ></script>
<script src="../static/top/gameadmin/libs/jquery.cookie.js" ></script>
<script>
var le = {
language: {
"sProcessing": "处理中...",
"sLengthMenu": "显示 _MENU_ 项结果",
"sZeroRecords": "没有匹配结果",
"sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
"sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
"sInfoFiltered": "(由 _MAX_ 项结果过滤)",
"sInfoPostFix": "",
"sSearch": "搜索:",
"sUrl": "",
"sEmptyTable": "表中数据为空",
"sLoadingRecords": "载入中...",
"sInfoThousands": ",",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "上页",
"sNext": "下页",
"sLast": "末页"
}
}
}
</script>
<head>
<!-- <meta charset="UTF-8"> -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<!-- <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/> -->
<!-- <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" /> -->
<title>硕果电影</title> </head>
<body> <!-- <div class="aui-content aui-margin-b-15"> -->
<section class="container-fluid page-404 minWP text-c" style="height: 20px;">
<p class="error-title">
<span class="va-m"> 电影列表</span>
</p>
</section> <div class="container" style="margin-top: 70px">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<table id="dt" style="border:black 3px solid" class="table table-hover">
<thead><tr class="warning"><td>影片名称</td><td>影片类别</td><td>更新时间</td><td>播放</td></tr></thead>
<tbody>
{% for i in info %}
<tr>
<td>{{i['title']}}</td>
<td>{{i['typ']}}</td>
<td>{{i['update_time']}}</td>
<td>
{%for j in i['info_url']%}
<a href="{{j['url']}}">{{j['name']}}</a>
{%end%}
</td>
</tr>
{%end%}
</tbody>
</table>
<div class="page_num">
{% raw str_page %}
</div> </div>
</div>
</div>
</div>
<script type="text/javascript" src="../static/top/gameadmin/js/jquery.dataTables.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
"bFilter": true, //过滤功能 $("#dt").DataTable(
// "bFilter": true,//过滤功能
// 'bLengthChange': false,//改变每页显示数据数量
le,
); })
</script>
</body>
</html>

效果如下:

Django

1,前端

<nav aria-label="Page navigation">
<div class="pagination">
<ul class="pagination">
{% if books.has_previous %}
<a class='active' href="?page={{ books.previous_page_number }}">上一页</a>
{% endif %} <!-- {% for num in books.paginator.page_range%}
{%if pindex == books.number%}
<a href="">{{ num }}</a>
{%else%}
<a href="/books/borrow_show/{{num}}">{{ num }}</a>
{%endif%}
{% endfor %} -->
<span class="current">
第{{ books.number }}页</span> {% if books.has_next %}
<a class='active' href="?page={{ books.next_page_number }}">下一页</a>
{% endif %} 共{{ books.paginator.num_pages }}页
</ul>
</div>
</nav>

2,后端

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage, InvalidPage
class My_player(View):
@method_decorator(check_login)
def get(self,request):
res = request.COOKIES.get("token")
ret = Account.objects.filter(uuid=int(res)).first()
result = Friendscircle.objects.filter(accountid=ret.id).first()
#玩家信息
info = Friendscircleaccount.objects.filter(fcircleid=result.id).values('accountid') id_list = []
for i in info:
if i['accountid'] != ret.id:
id_list.append(i['accountid']) book_list = Account.objects.filter(id__in=id_list)
paginator = Paginator(book_list, 5)
page = request.GET.get('page')
try:
books = paginator.page(page)
# todo: 注意捕获异常
except PageNotAnInteger:
# 如果请求的页数不是整数, 返回第一页。
books = paginator.page(1)
except InvalidPage:
# 如果请求的页数不存在, 重定向页面
return HttpResponse('找不到页面的内容')
except EmptyPage:
# 如果请求的页数不在合法的页数范围内,返回结果的最后一页。
books = paginator.page(paginator.num_pages) return render(request,'myPlayer.html', {'books': books})

tornado&django --- 分页的更多相关文章

  1. django 分页(2) 使用类 页码显示

    django 分页显示页码 views.py 显示11页码 ) < 起始位置 - 10总页数 else 总页数 > IF 当前页 小于 起始位置 结束页 IF 当前页 大于 IF 如果结束 ...

  2. Django 分页功能

    Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...

  3. 原生的 django 分页

    原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...

  4. django 分页组件

      一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...

  5. Django分页(二)

    Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...

  6. Django分页(一)

    Django分页(一) 手动实现简单分页 HTML <!DOCTYPE html> <html lang="en"> <head> <me ...

  7. django 分页出现 UnorderedObjectListWarning 错误

    django 分页出现此错误: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unorde ...

  8. 2019.03.20 mvt,Django分页

    MVT模式   MVT各部分的功能:   M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理.       V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返 ...

  9. Django分页类的封装

    Django分页类的封装 Django ORM  封装 之前有提到(Django分页的实现)会多次用到分页,将分页功能封装起来能极大提高效率. 其实不是很难,就是将之前实现的代码全都放到类中,将需要用 ...

随机推荐

  1. 使用iMindMap思维导图软件的活动策划模板制定策划方案

    活动策划不单单是一个头脑风暴的过程,更是一个整合各项资源.条件的过程.因此我们可以合理的使用思维导图软件来做活动策划.iMindMap(Windows系统)思维导图软件提供了快捷而方便的活动策划模板, ...

  2. 25. K 个一组翻转链表

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表.k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序.示例 :给定这个链表: ...

  3. Java蓝桥杯01——第一题集锦:堆煤球、购物单、哪天返回、第几天、分数

    堆煤球(2016JavaB) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100 ...

  4. 通过Consul Raft库打造自己的分布式系统

    通用的CP系统有etcd和consul, 通用的对立面就是专用系统. 所以在某些场合是有这种需求的. 然而etcd embed的可用性极差, Windows上面跑会出现各种问题, 而且不能定制协议, ...

  5. Linux的硬盘挂载

    一·前言 我朋友买了一个香港的服务器,可用总容量为60G,实际只有15.4G,剩下的容量需要硬盘挂载.他尝试无果,向我求助.我帮他解决了问题,想回顾一下整理写此随笔. 二·运行环境 Linux系统版本 ...

  6. LeetCode 004 Median of Two Sorted Arrays

    题目描述:Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...

  7. python之切片操作,实现一个trim()函数,去除字符串首尾的空格.

    # -*- coding: utf-8 -*- def trim(s): if len(s)==0: return '' if s[:1]==' ': return trim(s[1:]) elif ...

  8. MongoDB去重

    db.集合.aggregate([ { $group: { _id: {字段1: '$字段1',字段2: '$字段2'},count: {$sum: 1},dups: {$addToSet: '$_i ...

  9. C#数据结构-二叉树-链式存储结构

    对比上一篇文章"顺序存储二叉树",链式存储二叉树的优点是节省空间. 二叉树的性质: 1.在二叉树的第i层上至多有2i-1个节点(i>=1). 2.深度为k的二叉树至多有2k- ...

  10. Python中判断字符串是否为数字的三个方法isdecimal 、isdigit、isnumeric的差别

    isdecimal .isdigit.isnumeric这三个字符串方法都用于判断字符串是否为数字,为什么用三个方法呢?他们的差别是什么内? isdecimal:是否为十进制数字符,包括Unicode ...