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
下一篇 2016-08-22

相关推荐

  • 专属个人的聊天机器人的实现——图灵机器人

    先体验一下:图灵机器人智能聊天体验:http://www.tuling123.com/openapi/cloud/proexp.jsp 1、简介        本篇为大家介绍使用图灵机器人api实现聊天机器人的方法,该api本身已经拥有了智能聊天的功能,但我们可以自定义知识库的方式简单实现专属个人的聊天机器人。 2、开…

    Linux干货 2016-03-28
  • 变量的高级操作

                                                  一  字符串切片 &nbsp…

    Linux干货 2017-04-16
  • 链接分析算法之:主题敏感PageRank

      前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所…

    Linux干货 2016-02-17
  • grub文件文件修复

    首先我们先破坏一下grub文件 这里我们先查看一下电脑是哪块硬盘启动的 这里我们就直接破坏硬盘的二进制数据,以达到grub的破坏。 要记住我们只能破坏前446字节,也就是bootloader。后面64字节是分区表。 我们可以查看一下前512字节的二进制文件 hexdump -C -n 512 /dev/sda 先破坏/boot/grub/stage1的前44…

    2017-07-28
  • 前两周linux基础知识总结

    linux用户权限管理 软链接与硬链接 输入输出重定向 文本处理三剑客vim sed awk 包管理rpm yum 源码包编译安装

    Linux干货 2018-03-17