django 分页(2) 使用类 页码显示
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) 使用类 页码显示的更多相关文章
- Django分页类的封装
Django分页类的封装 Django ORM 封装 之前有提到(Django分页的实现)会多次用到分页,将分页功能封装起来能极大提高效率. 其实不是很难,就是将之前实现的代码全都放到类中,将需要用 ...
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- Django分页的实现
Django分页的实现 Django ORM 分页介绍 分页是网页浏览中常见到的一种形式,在数据量较大时,一个页面显示不全,采取分割数据由用户选择进行显示的方式. 基本实现 技术点 通过切片得到数据 ...
- Django 分页 以及自定义分页
Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表.元组或其它可迭代的对象. 基本语法 1 2 3 4 5 6 7 8 9 ...
- 【python】-- Django 分页 、cookie、Session、CSRF
Django 分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...
- django分页功能,templatetags的应用
django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...
- 稳定易用的 Django 分页库,完善分页功能
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在 通过 Django Pagination 实现简单分页 中,我们实现了一个简单的 ...
- 原生的 django 分页
原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...
- Django分页(二)
Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...
随机推荐
- uploadify 3.2 后台动态传参数
最近在弄一个上传的小功能,需要往后台传递一些动态参数,网上有一些传参数可能是因为版本不对也没成功.仔细看了官网的一些说明,搞定了. 3.2中传递参数用的的是'formData':{'somekey': ...
- 安装pypcap = 安装flex:the fast lexical analyser + 安装libpcap-1.7.4
flex flex is a tool for generating scanners 安装flex-2.6.0安装包 网址:https://sourceforge.net/projects/flex ...
- PHP 错误与异常 笔记与总结(13 )自定义异常类
针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 <?php heade ...
- ios_常用关键字
一.关键字说明 1. @synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 . 2. @implementation ...
- Nginx部署ThinkPHP项目的办法
thinkphp config配置: ', //URL模式 nginx rewrite配置: location / { if (!-e $request_filename) { rewrite ^(. ...
- OneDrive无法正常登录
可能是DNS被污染 手动设置DNS 134.170.108.26 onedrive.live.com134.170.108.152 skyapi.onedrive.live.com
- ext在web工程目录导致myeclipse内存溢出问题
分类: Extjs2013-01-24 00:01 2068人阅读 评论(2) 收藏 举报 当在eclipse中的web工程中增加了extjs4,出现An internal error occurre ...
- 【转】 使用Redis的Pub/Sub来实现类似于JMS的消息持久化
http://blog.csdn.net/canot/article/details/52040415 关于个人对Redis提供的Pub/Sub机制的认识在上一篇博客中涉及到了,也提到了关于如何避免R ...
- C语言第一次作业
- 答CsdnBlogger问-关于定时和后台服务问题
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 前段时间写了不少博客,在问答页面也陆续回答几十个问题,之后Csdn乙同学找到我,说要推荐我参加问答类 ...