Django分頁

Django分頁主要用到了django/core/paginator.py模塊。

class Paginator(object_listper_pageorphans=0allow_empty_first_page=True)

class Paginator(object):

    def __init__(self, object_list, per_page, orphans=0,
                 allow_empty_first_page=True):
        self.object_list = object_list
        self.per_page = int(per_page)
        self.orphans = int(orphans)
        self.allow_empty_first_page = allow_empty_first_page
        self._num_pages = self._count = None

    def validate_number(self, number):
        """
        Validates the given 1-based page number.
        """
        try:
            number = int(number)
        except (TypeError, ValueError):
            raise PageNotAnInteger('That page number is not an integer')
        if number < 1:
            raise EmptyPage('That page number is less than 1')
        if number > self.num_pages:
            if number == 1 and self.allow_empty_first_page:
                pass
            else:
                raise EmptyPage('That page contains no results')
        return number
需要的參數:
  1. object_list:可以使列表,元組,或者其它可用count()、__len__()方法的可切片對象。
  2. per_page:每一頁最多可以顯示的條目。(最後一頁可能會受到orphans設置的影響)
可選的參數:
  1. orphans:設置最後一頁顯示的最少條目。用來處理非整除的情況下,不讓最後一頁的條目太少,把最後一頁過少的條目添加到之前的頁面顯示。
  2. allow_empty_first_page:設置是否允許第一頁爲空,如果值爲False,第一頁爲空會提示一個EmptyPage的錯誤。
方法:

  1. paginator.page(number):返回給定索引的頁面對象,如果該頁面不存在,就提示InvalidPage.
屬性:

  1. paginator.count:返回所有頁麪條目的總數目。
  2. paginator.num_pages:返回頁面的總數目。
  3. paginator.page_range:返回頁面的range,例如[1,2,3,4,5,6,7]。
Page對象:

一般情況下,Page對象是由paginator.page()方法得到的。

class Page(object_listnumberpaginator)

方法:

  1. Page.has_next():如果有下一個頁面,返回true。
  2. Page.has_previous():如果有前一個頁面,返回true。
  3. Page.has_other_pages():前一個頁面或者有一個頁面,有其中的一個就返回true。
  4. Page.next_page_number(),Page.previous_page_number():返回下一個、前一個頁面的數字,如果不存在返回InvalidPage。
  5. Page.start_index(),Page.end_index():返回給定頁面第一個條目的索引、最後一個條目索引。
屬性:

  1. Page.object_list:頁面對象的列表。
  2. Page.number:頁面的數字。
  3. Page.paginator:與頁面相關的paginator對象。
下面是一個把1000個數字每一頁顯示25個的實例:

視圖模塊:


模板list.html:


在相對應的urls.py文件中,設置好鏈接後,顯示結果如下:






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章