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文件中,设置好链接后,显示结果如下:






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