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.www58058.com/37956

(0)
心肝壞了心肝壞了
上一篇 2016-08-22
下一篇 2016-08-22

相關推薦

  • 第三次 練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ~]# who | cut -d "" -f1 |uniq root     pts/0        2016-11-13 12:17 (172.16.220.14) 2、取出最后登錄到…

    Linux干貨 2016-11-16
  • VSFTP詳細配置說明

    VSFTP詳細配置說明 §·FTP(File Transfer Protocol 文件傳輸協議)介紹 1 §·FTP連接類型主動模式與被動模式 2 §·Linux中FTP軟件 VSFTP介紹 4 §·Linux中 VSFTP基于mariadb用戶名密碼認證 7 §·附錄–課外學習資料參考 9 §·常見問題處理 11  §·FT…

    Linux干貨 2016-10-17
  • 磁盤管理—MBR分區與GPT分區總結

    描述: 1,什么是磁盤分區   磁盤分區是使用分區編輯器(partition editor)在磁盤上劃分幾個邏輯部分,盤片一旦劃分成數個分區(Partition),不同類的目錄與文件可以存儲進不同的分區。 2,硬盤結構及參數   3D參數(Disk Geometry):CHS(Cylinder/Head/Sector)  &nb…

    Linux干貨 2016-08-29
  • grep的用法(CentOS7)及有關正則表達式的使用

    http://www.cnblogs.com/wzhuo/p/6659352.html

    Linux干貨 2017-04-08
  • 第二周作業

    一、文件管理命令以及演示方法  1.1. mkdir命令     作用:創建文件夾     基本用法:mkdir [OPTION]… DIRECTORY…     參數:   &nbsp…

    Linux干貨 2016-08-22
欧美性久久久久