您的位置:首页 > 编程语言 > Python开发

关于python-web开发中分页的处理

2017-07-17 15:25 316 查看
本案例基于tornado基础上

一、分页的效果



二、封装一个分页的方法

#!/usr/bin/env python
# encoding: utf-8
"""
定义一个分页的方法
current_page:表示当前页面
countent:查询出来全部的数据
MAX_PAGE:表示一页显示多少,一般定义在一个常量的文件中
"""
def get_page_list(current_page, countent, MAX_PAGE):
start = (current_page - 1) * MAX_PAGE
end = start + MAX_PAGE
# 进行切片操作
split_countent = countent[start:end]
# 计算总共多少页
count = len(countent) / MAX_PAGE
if len(countent) % MAX_PAGE != 0:
count += 1
# 上一页
pre_page = current_page - 1
# 下一页
next_page = current_page + 1
# 边界点的判断
if pre_page == 0:
pre_page = 1
if next_page > count:
next_page = current_page

# 进行分页处理,把当前显示的全部页码返回到前端,前端直接遍历就可以
if count < 5:
pages = [p for p in xrange[1, count + 1]]
elif current_page <= 3:
pages = [p for p in xrange(1, 6)]
elif current_page >= count - 2:
pages = [p for p in xrange(count - 4, count + 1)]
else:
pages = [p for p in xrange(current_page - 2, current_page + 3)]

return {
'split_countent': split_countent,  # 当前显示的
'count': count,  # 总共可以分多少页
'pre_page': pre_page,  # 上一页
'next_page': next_page,  # 下一页
'current_page': current_page,  # 当前页
'pages': pages  # 全部的页面吗
}


三、调用分页方法

def get(self, page):
files = Files.display_file_list();
# 这个get_page_list函数中返回是一个对象,files_page["split_countent"]表示取当前显示的内容
files_page = get_page_list(int(page), files, MAX_PAGE)
self.render("admin/main/file_list.html", files=files_page["split_countent"], files_page=files_page)


四、点击确认跳转到分页

class ToPage(BaseHandler):
def post(self):
page = self.get_argument("page",'');
files = Files.display_file_list();
# 这个get_page_list函数中返回是一个对象,files_page["split_countent"]表示取当前显示的内容
files_page = get_page_list(int(page), files, MAX_PAGE)
self.render("admin/main/file_list.html", files=files_page["split_countent"], files_page=files_page)


五、前端页面

<div class="row">
<ul class="pagination pagination-sm" style="width: 340px;float: left" id="page-num">
<li><a href="/admin/selfInfo/{{ files_page['pre_page'] }}">«</a></li>
{% if files_page['current_page'] != 1 %}
<li><a href="/admin/selfInfo/1">首页</a></li>
{% end %}
{% for index in files_page['pages']%}
<li {%  if index ==files_page['current_page'] %} class="active" {% end %} >
<a href="/admin/selfInfo/{{ index }}">{{ index }}</a>
</li>
{% end %}
{% if files_page['current_page'] != files_page['count']%}
<li><a href="/admin/selfInfo/{{ files_page['count'] }}">尾页</a></li>
{% end %}
<li><a href="/admin/selfInfo/{{ files_page['next_page'] }}">»</a></li>
</ul>
<p style="float: left;margin: 26px 0;">共{{files_page['count']}}页 | 第 {{files_page['current_page']}} 页</p>
<div style="float:left;margin-top: 26px;margin-left: 10px;">
<span style="display: block;float: left;">跳转至:</span>
<form style="float: right;margin-top: -2px;margin-left: 10px;" action="/topage" method="post">
<input type="text" style="width: 40px;text-align: center" name="page"/>
<input type="submit" value="确认" />
</form>
</div>
</div>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python tornado 分页