hjhmpl 2019-12-17
1、tornado_main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
6
import tornado.web
import tornado.ioloop
LIST_INFO = [
{‘username‘: ‘yusheng‘, ‘email‘: ‘‘}
]
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="1">
<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、图示
