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

相关推荐

  • 初识正则表达式

    正则表达式是个什么东东? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。在很多文本编辑器里、命令中,通常要使用检索、替换、放行和拒绝那些符合某个模式的文本。而正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。  摘自《正则表达式之…

    Linux干货 2015-03-27
  • linux网络管理 一

    什么是网络?         是指将具有独立功能的计算机和周边设备,通过通信线路连接起来,在网络软件的支持下,实现资源的共享和数据的整个系统。 网络的特征:         速度      …

    2017-03-16
  • Centos6.8 搭建LAMP平台

    Centos6.8 搭建LAMP平台 §·运行环境介绍 LAMP的运行环境介绍: L代表: Linux  Centos 6.8 A代表: apache  httpd-2.2.15-53.el6.centos.x86_64 M代表:MySQL  mysql-server-5.1.73-7.el6.x86_64 P代表: php &…

    Linux干货 2016-10-12
  • sed简介及常见用法

    sed是一个文本流处理器,配合正则表达式用可以实现很多文本处理操作。 和grep一样,sed是一行一行的处理的。sed处理文本时,首先会将源文件复制一份到内存中,然后将文本一行一行拿到模式空间内进行操作,最后输出到标准输出,即屏幕上。 在模式空间中,每一行都会根据用户给的条件进行匹配,匹配到了进行编辑后输出,没有匹配到,直接输出到标准输出。sed除了模式空间…

    2018-01-04
  • 学习宣言

    没有学不会的技术,只有不勤奋的人!

    Linux干货 2016-12-28