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. 新浪SAEStorage图片上传的demo和说明

    <?php if(isset($_POST[up])){ $s2 =new SaeStorage();//实例化 $name =$_FILES['myfile']['name'];//上传到服务 ...

  2. 《Java核心技术卷二》笔记(一)流与文件

    一.流的概念 在Java中,可以提供字节序列的对象,或者可以接收字节序列的对象,都可以抽象成流.系统中的文件,网络,内存这些设备都可以读入或者写入字节,自然也可以用流的方式来操作.能向程序中提供字节序 ...

  3. Apache Spark源码走读之5 -- DStream处理的容错性分析

    欢迎转载,转载请注明出处,徽沪一郎,谢谢. 在流数据的处理过程中,为了保证处理结果的可信度(不能多算,也不能漏算),需要做到对所有的输入数据有且仅有一次处理.在Spark Streaming的处理机制 ...

  4. laravel transaction : laravel 的事务是不支持eloquent的, 要用DB::的方式

    数据库事务处理# 你可以使用 transaction 方法,去执行一组数据库事务处理的操作: DB::transaction(function() { DB::table('users')->u ...

  5. Python的包管理工具--PIP安装使用

    最新安装方式 # wget https://bootstrap.pypa.io/get-pip.py # python get-pip.py  // 使用该方式安装已经不再要求提前安装setuptoo ...

  6. 使用shape设置只有部分边框有颜色

    <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android=" ...

  7. 使用phpstorm和xdebug实现远程调试

    使用phpstorm和xdebug实现远程调试 2012-05-23 10:06:35 vs的断点调试功能很强大有木有,能查看所有变量有木有.php调试很麻烦有木有,echo,var_dump写得你想 ...

  8. 匈牙利命名法,骆驼命名法(camel),帕斯卡(Pascal)命名法(转)

    一.匈牙利命名法      Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi) ...

  9. A20的板子笔记

    除了串口可以登入控制台,还可以用SSH2. ftp连接的时候要打开  vi /usr/sbin/stupid-ftpd.conf 修改端口,修改完端口,登入的时候root的密码跟以前不一样,可以从st ...

  10. MVC @functions

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...