python__Django 分页
自定义分页的类:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by Mona on 2017/9/20 from django.utils.safestring import mark_safe class Paginator:
'''
页码的格式依赖于bootstrap;
使用案例: from django.shortcuts import render,redirect,HttpResponse
from app01.models import *
from tools import page 导入 def index(request):
base_url = request.path_info
total_item_count = UserInfo.objects.all().count()
current_page = int(request.GET.get('page',1)) page_obj = page.Paginator(total_item_count,current_page,base_url) user_list = UserInfo.objects.all()[page_obj.start:page_obj.end] return render(request,'index.html',{'user_list':user_list,'html_page': page_obj.pager}) '''
def __init__(self,total_item_count,current_page,base_url,
per_page_item_count=10,show_pager_count=11):
'''
:param total_item_count: 总记录数
:param current_page: 当前页码
:param base_url: 页码的前缀URL
:param per_page_item_count: 每页显示的记录数
:param show_pager_count: 显示的页码个数
''' self.total_item_count = total_item_count
self.current_page = current_page
self.base_url = base_url
self.per_page_item_count = per_page_item_count
self.show_pager_count = show_pager_count total_page, res = divmod(self.total_item_count, self.per_page_item_count)
if res:
total_page += 1 self.total_page = total_page
self.half_show_pager_count = int(total_page/2) @property
def start(self):
'''
页码查询数据的开始位置
:return:
'''
return (self.current_page-1)*self.per_page_item_count @property
def end(self):
'''
页码查询数据的结束位置
:return:
'''
return self.current_page*self.per_page_item_count @property
def pager(self):
'''
返回需要的前端页码
:return:
'''
page_list = []
ul = ' <ul class="pagination">'
page_list.append(ul) if self.current_page == 1:
prev = ' <li><a href="#">上一页</a></li>'
else:
prev = ' <li><a href="%s?page=%s">上一页</a></li>' % (self.base_url, self.current_page - 1) page_list.append(prev) # 如果数据特别少:
if self.total_page < self.show_pager_count:
pager_start = 1
pager_end = self.total_page + 1 else:
if self.current_page <= self.half_show_pager_count:
pager_start = 1
pager_end = self.show_pager_count + 1 else:
if self.current_page + self.half_show_pager_count > self.total_page:
pager_start = self.total_page - self.show_pager_count + 1
pager_end = self.total_page + 1
else:
pager_start = self.current_page - self.half_show_pager_count
pager_end = self.current_page + self.half_show_pager_count + 1 for i in range(pager_start, pager_end):
if i == self.current_page:
tpl = ' <li class="active"><a href="%s?page=%s">%s</a></li>' % (self.base_url, i, i,)
else:
tpl = ' <li><a href="%s?page=%s">%s</a></li>' % (self.base_url, i, i,)
page_list.append(tpl) if self.current_page == self.total_page:
nex = ' <li><a href="#">下一页</a></li>'
else:
nex = ' <li><a href="%s?page=%s">下一页</a></li>' % (self.base_url, self.current_page + 1,) page_list.append(nex) lu = ' </ul>'
page_list.append(lu) html_page = mark_safe(''.join(page_list))
return html_page
效果展示:

python__Django 分页的更多相关文章
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- 套用JQuery EasyUI列表显示数据、分页、查询
声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...
- php实现的分页类
php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...
- C#关于分页显示
---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...
- JAVA 分页工具类及其使用
Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...
随机推荐
- SHA信息摘要
SHA算法是在MD4的基础上演进而来的,通过SHA算法能够获得一个固定长度的摘要信息. SHA算法系列有SHA-1(也成为SHA),SHA-224,SHA-256,SHA-384和SHA-512这 ...
- 调试node.js应用--node-inspector
如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多.使用起来跟Chrome的javascript调试器很相似. 使用npm安装: $ npm ...
- CGI(Common Gateway Interface),通用网关接口
通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术.通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给 ...
- 使用PHP函数输出前一天的时间和后一天的时间
1.明确date()函数和time()函数的功能,其中time()函数是获取时间戳函数 2.输出前一天的当前时间: echo '一天之前的时间为:'.date('Y-m-d H:i:s',time() ...
- PowerDesigner如何导出表到word的方法
from:https://jingyan.baidu.com/article/295430f1c385970c7f005056.html PowerDesigner如何导出表到word的方法 听语音 ...
- 【BZOJ1976】[BeiJing2010组队]能量魔方 Cube 最小割
[BZOJ1976][BeiJing2010组队]能量魔方 Cube Description 小C 有一个能量魔方,这个魔方可神奇了,只要按照特定方式,放入不同的 能量水晶,就可以产生巨大的能量. 能 ...
- windows解除端口占用
1.步骤如图: 图片原文:https://stackoverflow.com/questions/33108185/intellij-keeps-displaying-annoying-message ...
- xampp怎么操作数据库mysql
1.打开软件的主界面,打开Apache和MySQL,然后点击MySQL后面的admin.且我操作时,Apache,MySQL要启动,才打的开. 2.打开MySQL,报错. 09:00:23 [mysq ...
- 巨蟒python全栈开发数据库前端9:bootstrap
1.bootstrap的主网站: http://www.bootcss.com/ (1)bootstrap的CSS样式 (2)bootstrap组件 (3)JavaScript插件 (4)阿里图标库的 ...
- Quality of service
w https://en.wikipedia.org/wiki/Quality_of_service Quality of service (QoS) is the overall performan ...