1、tornado_main.py

 #!/usr/bin/env python
# -*- coding: utf-8 -*- import tornado.web
import tornado.ioloop LIST_INFO = [
{'username': 'yusheng', 'email': '137@163.com'}
]
for i in range(200):
temp = {'username': str(i) + "lys", 'email': str(i) + "@163.com"}
LIST_INFO.append(temp) class Pagenation: def __init__(self, current_page, all_item, base_url): #当前页 内容总数 目录
try:
page = int(current_page)
except:
page = 1
if page < 1:
page = 1 all_page, c = divmod(all_item, 5)
if c > 0:
all_page += 1 self.current_page = page
self.all_page = all_page
self.base_url = base_url @property
def start(self):
return (self.current_page - 1) * 5 @property
def end(self):
return self.current_page * 5 def string_pager(self):
list_page = []
if self.all_page < 11:
s = 1
t = self.all_page + 1
else:
if self.current_page < 6:
s = 1
t = 12
else:
if (self.current_page + 5) < self.all_page:
s = self.current_page-5
t = self.current_page + 6
else:
s = self.all_page - 11
t = self.all_page +1 first = '<a href = "/index/1">首页</a>'
list_page.append(first)
# 当前页
if self.current_page == 1:
prev = '<a href = "javascript:void(0):">上一页</a>'
else:
prev = '<a href = "/index/%s">上一页</a>'%(self.current_page-1,)
list_page.append(prev) #页码
for p in range(s, t):
if p== self.current_page:
temp = '<a class = "active" href = "/index/%s">%s</a>' % (p, p)
else:
temp = '<a href = "/index/%s">%s</a>' % (p, p)
list_page.append(temp) # 尾页
if self.current_page == self.all_page:
nex = '<a href = "javascript:void(0):">下一页</a>'
else:
nex = '<a href = "/index/%s">下一页</a>' % (self.current_page + 1,)
list_page.append(nex) last = '<a href = "/index/%s">尾页</a>' % (self.all_page)
list_page.append(last) #跳转
jump = '''<input type="text"><a onclick = "Jump('%s',this);">GO</a>''' % ('/index/')
script = '''
<script>
function Jump(baseUrl,ths){
var val = ths.previousElementSibling.value;
if (val.trim().length > 0){
location.href = baseUrl + val;
}
}
</script>
'''
list_page.append(jump)
list_page.append(script)
str_page = "".join(list_page) return str_page class IndexHandler(tornado.web.RequestHandler): def get(self, page):
obj = Pagenation(page, len(LIST_INFO), '/index/')
current_list = LIST_INFO[obj.start:obj.end]
str_page = obj.string_pager()
self.render('index.html', list_info=current_list, current_page=obj.current_page, str_page=str_page) application = tornado.web.Application([
(r'/index/(?P<page>\d*)', IndexHandler) ]) if __name__ == "__main__":
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()

2、index.html

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.pager a{
display: inline-block;
padding: 5px 6px;
margin: 10px 3px;
border: 1px solid #2b669a;
text-decoration:none; }
.pager a.active{
background-color: #2b669a;
color: white;
}
</style>
</head>
<body>
<h3>显示数据</h3>
<table border="">
<thead>
<tr>
<th>用户名</th>
<th>邮箱</th>
</tr>
</thead>
<tbody>
{% for line in list_info %}
<tr>
<td>{{line['username']}}</td>
<td>{{line['email']}}</td>
</tr>
{% end %}
</tbody>
</table>
<div class="pager">
{% raw str_page %}
</div>
</body>
</html>

3、图示

web框架--tornado自定义分页的更多相关文章

  1. Python Web框架 tornado 异步原理

    Python Web框架 tornado 异步原理 参考:http://www.jb51.net/article/64747.htm 待整理

  2. 第三百一十四节,Django框架,自定义分页

    第三百一十四节,Django框架,自定义分页 自定义分页模块 #!/usr/bin/env python #coding:utf-8 from django.utils.safestring impo ...

  3. Python web框架 Tornado异步非阻塞

    Python web框架 Tornado异步非阻塞   异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案: ...

  4. Python web框架 Tornado(三)自定义session组件

    我们在学习Django框架的过程中,内部封装了session组件,以方便于我们使用进行验证.但是Tornado框架是没有session的,所以如果想使用session的话,就需要我们自己定制相对应的组 ...

  5. 第一个web框架tornado

    简介 tornado,是我学到的第一个web框架是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google ...

  6. Python web框架 Tornado(一)基础学习

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

  7. web框架--tornado框架之模板引擎

    使用Tornado实现一个简陋的任务表功能demo来讲解tornado框架模板引擎 一.demo目录结构 二.具体文件内容 2.1.commons.css .body{ margin: 0; back ...

  8. 异步非阻塞IO的Python Web框架--Tornado

    Tornado的全称是Torado Web Server,从名字上就可知它可用作Web服务器,但同时它也是一个Python Web的开发框架.最初是在FriendFeed公司的网站上使用,FaceBo ...

  9. Python web框架——Tornado

    Tornado是一个Python Web框架和异步网络库,最初由FriendFeed开发.通过使用非阻塞网络I / O,Tornado可以扩展到数万个开放连接,使其成为需要长时间连接每个用户的长轮询, ...

随机推荐

  1. POJ2976Dropping tests(分数规划)

    传送门 题目大意:n个二元组a[i],b[i],去掉k个,求sigma a[i]/ sigma b[i]的最大值 代码: #include<iostream> #include<cs ...

  2. Note | 期刊答复(response)

    第一次TPAMI回复整理的经验. 190926:TPAMI中了,特回来补充. 简洁 尤其对于问答型问题,一定要在前三句话就回答审稿人的问题:yes or no. 不要绕弯子,专注于审稿人问题,解决就行 ...

  3. 插头Dp总结

    T1 HDU1693:Eat the Trees 题目大意:给出n*m的方格,有些格子不能铺线,其它格子必须铺,可以形成多个闭合回路.问有多少种铺法? 插头Dp板子题,题目要求可以是多个回路, 只需要 ...

  4. SuperSocket 2.0 发布第一个预览版, 另寻找Yang Fan哥哥

    昨天,SuperSocket的作者发布了2.0版本的第一个预览版.SuperSocket 2.0 是一个经过全新设计的,第一个完全基于.NET Core的版本.作者正在积极尝试提供更简单易用的API的 ...

  5. MongoDB自学------(2)创建删除数据库及集合

    一.创建数据库 二.查看所有数据库 三.删除数据库 四.创建集合 五.删除集合 六.集合用法介绍 1.创建集合 2.删除集合 下一篇链接:https://www.cnblogs.com/LinHuCh ...

  6. 前端实现的canvas支持多图压缩并打包下载的工具

    # 技术栈 canvas jszip.js(网页端压缩解压缩插件JSZIP库) FileSaver.js(文件保存到本地库) 在线预览:http://htmlpreview.github.io/?ht ...

  7. sudo: ulimit: command not found

    在这看到的:http://stackoverflow.com/questions/17483723/command-not-found-when-using-sudo-ulimit 修改系统文件打开数 ...

  8. Zabbix 监控阿里云RDS

    简介 Zabbix 监控阿里云RDS数据库.主要通过阿里云提供的API来进行监控. 需要在阿里云获取“用户AccessKey”指定ID,进行RDS监控. 环境 服务:Zabbix 3.0.28.zab ...

  9. Elastic Beats介绍

    需要学习的地方:概念,用法,模块使用 Elastic Beats介绍 Elastic Stack传统上由三个主要组件(Elasticsearch,Logstash和Kibana)组成,早已脱离了这种组 ...

  10. Java Scanner 类——获取用户的输入

    创建Scanner对象语法 Scanner scan = new Scanner(System.in); 使用next()获取输入的字符串 import java.util.Scanner; publ ...