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

相关推荐

  • PXE自动部署CentOS6

    1、安装需要的软件    (1)dhcp     (2)http    (3)tftp-server    (4)system-config-kickstart    (5)syslinux [root@centos6 ~]# y…

    Linux干货 2016-06-26
  • 小练习题。【第五周】

    1、显示当前系统上root、fedora或user1用户的默认shell; /]# cat /etc/passwd | grep '^root\|fedora\|user1' |cut -d':' -f1,7 2、找出/etc/rc.d/i…

    Linux干货 2016-11-26
  • keepalived

    简介:     vrrp, virtual routing redundant protocol, 虚拟路由协议, 是为了解决局域网中配置静态网关出现单点失败现象的路由协议; 设计目标时是支持特定情况下IP数据流量失败转移不会引起混乱, 允许主机使用单路由器, 以及及时在实际第一跳路由器使用失败的情形下, 仍然能够维护…

    Linux干货 2016-11-11
  • linux用户和组的配置文件

    1./etc/passwd:用户及其属性信息(用户名,密码,uid,gid,gecos注释性描述信息,家目录,登录shell)在/etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。      …

    2017-07-22
  • bash功能特性一 变量

    一、什么是shell     shell是为了使用户能够操作应用程序的接口程序。如经常使用的图形界面及命令行界面都是shell。下面来介绍一下bash这个shell的功能。 二、变量的概念     被命名的内存空间即为变量,Linux中内置了许多变量,我们可以通过修改这些变量的值…

    Linux干货 2015-04-19
  • linux 常用命令

    命令1 rm 作用: 删除指定的文件  选项 作用 -f 强制删除 -i 删除前提示询问 -r  或  -R 递归处理,删除指定目录下的所有文件包括子目录 -v 显示指令执行过程 -d 直接把删除目录的硬连接数据删成零,删除该目录 命令2 终端(tty): 终端类型 开启方式 物理终端 console 控制台console 虚拟…

    Linux干货 2017-07-13