python Django分页

自定义html_helper.py  —>  Page_helper类

#coding:utf-8
from django.utils.safestring import mark_safe

class Page_Helper(object):
    def __init__(self,page,html_string,page_space,host):
        self.Page = page
        self.Html_string = html_string
        self.Page_space = page_space
        self.Host = host
    @property
    def begin(self):
        begin = int((self.Page - 1) * self.Page_space)
        return begin
    @property
    def end(self):
        end = int(self.Page * self.Page_space)
        return end


    def page_html(self,all_count):
        result, residue = divmod(all_count, self.Page_space)
        first_page = '<a href = "/Page/%d" > 首页 </a>' %(1,)
        self.Html_string.append(first_page)
        if self.Page == 1:
            last_page = '<a href = "/Page/%d" > 上一页 </a>' %(1,)
        else:
            last_page = '<a href = "/Page/%d" > 上一页 </a>' %(self.Page-1,)
        self.Html_string.append(last_page)
        if residue == 0:
            result = result
        else:
            result = result + 1
        if result < 11:
            start_dir = 0
            end_dir = result
        else:
            if self.Page < 6:
                start_dir = 0
                end_dir = self.Page + 4
            else:
                if self.Page + 4 < result:
                    start_dir = self.Page - 5
                    end_dir = self.Page + 4
                else:
                    start_dir = self.Page -5
                    end_dir = result
        for i in range(start_dir,end_dir):
            if self.Page == i + 1:
                label_html = "<a style='color:red;' href = '/Page/%d' > %d </a>" % (i + 1, i + 1)
            else:
                label_html = '<a href = "/Page/%d" > %d </a>' %(i+1,i+1)
            self.Html_string.append(label_html)
        next_page = '<a href = "/Page/%d" > 下一页 </a>' %(self.Page+1,)
        self.Html_string.append(next_page)
        end_page = '<a href = "/Page/%d" > 尾页 </a>' %(result,)
        self.Html_string.append(end_page)

        pass_string = mark_safe(''.join(self.Html_string))
        return pass_string

在views定义函数

def Page(request,page):
    html_string = []
    page = int(page)
    page_space = 5
    helper = Page_Helper(page,html_string,page_space,Host)
    all_discover = Host.objects.all()[helper.begin:helper.end]
    all_count = Host.objects.all().count()
    pass_string =helper.page_html(all_count)

    return render_to_response('page.html',{'data':all_discover,'pass_string':pass_string})

设置路由进行访问

url(r'Page/(\d*)',views.Page),

原创文章,作者:心肝坏了,如若转载,请注明出处:http://www.178linux.com/37956

(0)
心肝坏了心肝坏了
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相关推荐

  • IT基础设施工具—Puppet

    一、Puppet简介 Puppet是一款使用GPLV2X协议授权的开源管理配置工具,基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,既可以通过客户端—服务器的方式运行,也可以独立运行。Puppet适用于服务器管的整个过程 ,比如初始安装、配置更新以及系统下线。puppet可以为系统管理员提供方…

    Linux干货 2017-11-26
  • Shell 脚本作业(8月11号)

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 #!/bin/bash # author:huiping # version:1.0.1 # date:2016-08-11 # describe:&nb…

    Linux干货 2016-08-15
  • sed与vim

    sed工具 简介 Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Se…

    Linux干货 2016-08-15
  • 我在马哥的学习生涯开始

    我的人生工作目标:年薪百万不是梦!

    Linux干货 2016-10-28
  • Linux网络管理基础

    Linux网络管理基础 动态路由 Bonding Network Teaming 静态路由实验 Linux的网络管理,了解基本的网络知识是基础,除此,要掌握好ifconig命令、ip命令、nmcli命令(CentOS 7),以及涉及到网络的配置文件。 配置动态路由: 通过守护进程获取动态路由,安装quagga包,支持RIP、OSPF、BGP,通过命令vtys…

    Linux干货 2016-09-09
  • 网络管理(二)之IP地址划分子网、多块网卡共用单一IP

    网络管理(二)IP地址   一、认识学习IP地址的组成: 1、它们可唯一标识IP 网络中的每台设备 2、IP地址由两部分组成: 网络ID:标识网络;每个网段分配一个网络ID 主机ID:标识单个主机;由组织分配给各设备 3、点分十进制计法表示IPv4地址: 4、如下图,将系统中的IP地址用二进制表示,再通过转换合成的十进制数,使用ping命令可得出:…

    Linux干货 2016-09-05