django 分页显示页码

views.py

显示11页码

if 总页数() <
起始位置 - 10总页数 else
总页数 >
IF 当前页 小于
起始位置 结束页 IF 当前页 大于
IF 如果结束页 > 总页数
起始值 - 总页数
else
起始值 - 结束页 +
#!/usr/bin/env python
#_*_coding:utf-8_*_ from django.shortcuts import render,render_to_response,redirect,HttpResponse
from app01 import models
from django.utils.safestring import mark_safe
import common
import html_helper
# Create your views here. def index(request,page): page = common.try_int(page)
hostcount = models.Host.objects.all().count() # 获取数据库的总共条数 pageobj = html_helper.PageInfo(page,hostcount) hostall = models.Host.objects.all()[pageobj.start:pageobj.end] # 一页显示的条数 page_html = html_helper.Pager(page,pageobj.all_page_count()) ret = {'data':hostall,'count':hostcount,'page_ret':page_html}
return render_to_response('index.html',ret)

html_helper.py

#!/usr/bin/env python
#_*_coding:utf-8_*_
from django.utils.safestring import mark_safe class PageInfo(object):
def __init__(self,current_page,all_page_count,per_item=):
self.CurrentPage = current_page
self.AllCount = all_page_count
self.PerItem = per_item @property
def start(self):
return (self.CurrentPage - ) * self.PerItem @property
def end(self):
return self.CurrentPage * self.PerItem def all_page_count(self):
'''
tempcountpage = divmod(hostcount,pageint)
if tempcountpage[] == :
all_page_count = tempcountpage[]
else:
all_page_count = tempcountpage[] + '''
tempcountpage = divmod(self.AllCount,self.PerItem)
if tempcountpage[] == :
all_page_count = tempcountpage[]
else:
all_page_count = tempcountpage[] + return all_page_count def Pager(page,all_page_count):
# 定义一个列表,然后循环总页数,追加到列表中,
page_html = [] # 首页
first_page = '<a href="/index/%d">首页</a>' % ()
page_html.append(first_page) # 上一页
if page <= :
up_page = '<a href="/index/%d">上一页</a>' % ()
else:
up_page = '<a href="/index/%d">上一页</a>' % (page - ) page_html.append(up_page) # 显示1。。。最后的页数
if all_page_count < :
begin_page =
end_page = all_page_count
else:
if page < :
begin_page =
end_page =
else:
if page + > all_page_count:
begin_page = page -
end_page = all_page_count
else:
begin_page = page -
end_page = page + for i in range(begin_page,end_page):
if page == i + :
temp_html = '<a class="selected" href="/index/%d">[%d]</a>' % (i + , i + )
else:
temp_html = '<a href="/index/%d">[%d]</a>' % (i + , i + ) page_html.append(temp_html) # 下一页
if page >= all_page_count:
next_page = '<a href="/index/%d">[下一页]</a>' % (all_page_count)
else:
next_page = '<a href="/index/%d">[下一页]</a>' % (page + )
page_html.append(next_page) # 尾页
end_page = '<a href="/index/%d">[尾页]</a>' % (all_page_count)
page_html.append(end_page) # 使用mark_safe 可让html显示返回的a标签。join 把列表取出用空格连接
page_html = mark_safe(' '.join(page_html)) return page_html

django 分页(2) 使用类 页码显示的更多相关文章

  1. Django分页类的封装

    Django分页类的封装 Django ORM  封装 之前有提到(Django分页的实现)会多次用到分页,将分页功能封装起来能极大提高效率. 其实不是很难,就是将之前实现的代码全都放到类中,将需要用 ...

  2. django 分页组件

      一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...

  3. Django分页的实现

    Django分页的实现 Django ORM  分页介绍 分页是网页浏览中常见到的一种形式,在数据量较大时,一个页面显示不全,采取分割数据由用户选择进行显示的方式. 基本实现 技术点 通过切片得到数据 ...

  4. Django 分页 以及自定义分页

    Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 1 2 3 4 5 6 7 8 9 ...

  5. 【python】-- Django 分页 、cookie、Session、CSRF

    Django  分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...

  6. django分页功能,templatetags的应用

    django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...

  7. 稳定易用的 Django 分页库,完善分页功能

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在 通过 Django Pagination 实现简单分页 中,我们实现了一个简单的 ...

  8. 原生的 django 分页

    原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...

  9. Django分页(二)

    Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...

随机推荐

  1. 将request.getParameterMap()转换成可操作的普通Map

    在java web项目中虽然可以通过request.getParameterMap()很轻松的获得参数Map,但得到的Map和普通Map是不一样的,是被锁定的,不能像操作常规Map那样进行put.ge ...

  2. [ZZ] Understanding 3D rendering step by step with 3DMark11 - BeHardware >> Graphics cards

    http://www.behardware.com/art/lire/845/ --> Understanding 3D rendering step by step with 3DMark11 ...

  3. Cent OS 6.6 下安装mysql(5.5.20)和 PHP(5.3.10)

    0.准备步骤(没有连接网络的 linux): 挂载光盘.让网络 yum 源失效.修改光盘 yum 文件.安装 c 语言编译器 gcc. 1.MySQL(5.5.20) 下载 mysql 5.5.20 ...

  4. thinkPHP实现瀑布流的方法

    thinkPHP实现瀑布流的方法 文章TAG:thinkphp 瀑布流 时间:2014-11-29来源:www.aspku.com 作者:源码库 文章热度: 131 ℃ 过期已备案域名,注册就能用!终 ...

  5. GitHub超详细图文攻略

    GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git 分类: 转载2014-03-25 21:10 10641人阅读 评论(2) 收藏 举报 GitHubbr ...

  6. PHP正则表达式及实例

    PHP正则表达式及实例 博客分类: Php / Pear / Mysql / Node.js 正则表达式PHPWordPressFPApache  关联: 正则表达式 去除连续空白 + 获取url + ...

  7. CentOS上安装Node.js

    CentOS上安装Node.js [日期:2014-07-21] 来源:Linux社区  作者:maskdfe [字体:大 中 小]     CentOS上安装Node.js(想在Linux上学习No ...

  8. Python函数1

    Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...

  9. 6月辞职->帝都生活

    ---恢复内容开始--- 5月初送走了静,有点伤心,但还是忍住没哭. 纠结了一下上哪个班,上不上基础班,不能再拖了,果断交钱报6月份的ios基础班.之前还有个电话面试,怕怕的,考了很多函数的知识,好多 ...

  10. ubuntu下opencv在Qt中的使用

    1. 编译安装OpenCV2.4.9  本博已有文章描述 2. 安装Qt和QtCreator 从qt-project.org 下载Qt安装文件 qt-opensource-linux-x64-5.4. ...