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分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...
随机推荐
- SonarQube代码质量管理平台安装与使用
Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaS ...
- 约跑APP测试报告
用户需求规格说明书URL:http://www.cnblogs.com/liquan/p/6071804.html 组长博客URL:http://www.cnblogs.com/liquan/ 代码g ...
- POJ 1185 炮兵阵地(状压DP)
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26426 Accepted: 10185 Descriptio ...
- POJ 2528 Mayor's posters(线段树区间染色+离散化或倒序更新)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 59239 Accepted: 17157 ...
- myBatis应用
最近项目中使用myBatis(iBatis),所以目前对所遇的一些问题及有些模糊的地方在这里标注一下. 首先mybaits是一个“半自动化”的ORM框架. 需要使用的jar包:mybatis-3.0. ...
- 一些浏览器的USER-AGENT
115浏览器的USER-AGENT 版本号:5.1.3.55 Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like G ...
- Shell-bash中特殊字符汇总[转]
转自http://www.linuxidc.com/Linux/2015-08/121217.htm 首先举例一个bash脚本 #!/bin/bash file=$1 files=`find / -n ...
- memcached使用详解
不错的文章 http://www.ttlsa.com/memcache/memcached-description/
- Maximum Likelihood
https://en.wikipedia.org/wiki/Maximum_likelihood_estimation http://mathworld.wolfram.com/MaximumLike ...
- 错误记录--The import XXX cannot be resolved
错误:The import XXX cannot be resolved弄了好久,import类的都没问题,但就是报错.选择project --> clean后,OK.如果还不行,删掉全部imp ...