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; ...
随机推荐
- 进出口流程 & 报关单据
出口流程 一. 委托人 1. 需找货运代理公司 2. 向代理公司询问价格 一般为 ALL IN 价格( 空运费+燃油费+战险费 ) 总费用 = ALL IN 价格 * ( 货物公斤数 ) ALL IN ...
- CentOS 6.5 Git源码安装
首先清除系统自带git,使用如下命令 yum -y remove git 一.下载Git源码包 wget https://www.kernel.org/pub/software/scm/git/git ...
- apache2+svn Expected FS format '2'; found format '3'
format格式与svn版本号我猜对应如下: 1.4.x 对应 format 2 1.5.x 对应 format 3 …… 1.8.x 对应 format 6 那么每个format创建出的repo要用 ...
- ios 关于collectionView.performBatchUpdates()方法 --时时更新
今天想实现一个简单的collectionView动画效果,查阅相关资料发现,实现 collectionView.performBatchUpdates()方法即可,于是掉坑里了. 文档: public ...
- modelform 对象和model之间的关系
一.modelform的每一个标签对象 for bound_field in form: print('form.model',form.Meta.model) ...
- 如何通过sequel pro导入.sql脚本
1.参考地址 https://zhidao.baidu.com/question/985373253463808219.html
- Activity四种启动方式
Activity启动方式有四种,分别是: standardsingleTopsingleTasksingleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大 ...
- Oracle Delete与系统资源
在用Delete删除数据时,SQL语句首先要通过全表扫描或索引扫描找到符合条件的记录并删除. 然而在这个过程中将消耗大量的CPU资源,I/O资源以及UNDO数据. 如果删除的数据量较大,将极大的影响系 ...
- centos6.4下安装mysql5.7.18
1.安装前工作 在安装前需要确定现在这个系统有没有 mysql,如果有那么必须卸载(在 centos7 自带的是 mariaDb 数据库,所以第一步是卸载数据库). 卸载系统自带的Mariadb: 查 ...
- 位运算+引用+const+new/delete+内联函数、函数重载、函数缺省参数
update 2014-05-17 一.位运算 应用: 1.判断某一位是否为1 2.只改变其中某一位,而保持其它位都不变 位运算操作: 1.& 按位与(双目): 将某变量中的某些位(与0位与) ...