django分頁-Paginator類

>>> from django.core.paginator import Paginator  
>>> objects = ['john', 'paul', 'george', 'ringo']  
>>> p = Paginator(objects, 2)  
>>> p.count  
4  
>>> p.num_pages  
2  
>>> p.page_range  
[1, 2]  
>>> page1 = p.page(1)  
>>> page1  
<Page 1 of 2>  
>>> page1.object_list  
['john', 'paul']  
>>> page2 = p.page(2)  
>>> page2.object_list  
['george', 'ringo']  
>>> page2.has_next()  
False  
>>> page2.has_previous()  
True  
>>> page2.has_other_pages()  
True  
>>> page2.next_page_number()  
3  
>>> page2.previous_page_number()  
1  
>>> page2.start_index() # The 1-based index of the first item on this page  
3  
>>> page2.end_index() # The 1-based index of the last item on this page  
4  
>>> p.page(0)  
...  
EmptyPage: That page number is less than 1  
>>> p.page(3)  
...  
EmptyPage: That page contains no results  
Note

2.Paginator類

帶兩個構造參數,一個就是數據的集合,另外一個表示每頁放幾個數據python

1)構造函數:

Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)

必傳參數django

object_listless

一個list,tuple,django的QuerySet,或者擁有``count()``或``__len__()``方法的 可分解對象。函數

per_pagethis

每一頁最大的對象個數。spa

可選參數code

orphans對象

最後一頁對象的最少數目,默認爲0。 若是想避免最後一頁顯示太少。則能夠使用這個值。 那麼最後一頁的數據,自動被前移一頁。好比總共23個數據。每頁顯示 10.orphans=3 那麼,第一頁爲10,第二頁爲13.索引

allow_empty_first_pageit

表示首頁是否能夠爲空,若是是 False 並且``object_list`` 爲空,那麼會觸發 EmptyPage 異常。

2)方法

Paginator.page(number)

根據索引number,返回一個’Page’對象,若是不存在,引發 InvalidPage異常

3)屬性

Paginator.count

全部對象的總數, 嘗試經過``object_list.count()``和``object_list.__len__()`` 取得

Paginator.num_pages

總共的頁數

Paginator.page_range

頁的範圍,好比 [1, 2, 3, 4] 。

InvalidPage 異常

當頁面不存在或者無效時,會引發``InvalidPage``異常,通常這個異常就夠用,若是須要更 詳細信息,還有``PageNotAnInteger``,``EmptyPage``可用:

PageNotAnInteger

page() 的參數非整數。

EmptyPage

page(x) ,第x頁沒數據。

上述兩個都是 InvalidPage 的子類。 用一個簡單的 except InvalidPage 就能夠處理。

3.Page 類

1)構造函數

Page(object_list, number, paginator):

通常不需用戶本身構造,經過`Paginator.page` 生成。

2)方法

Page.has_next()

若是下一頁存在,返回True。

Page.has_previous()

若是前一頁存在返回 True

Page.has_other_pages()

若是上一頁面或者下一頁存在,返回``True``

Page.next_page_number()

返回下一頁的索引,這個函數比較傻(無論下一頁是否存在,都是簡單的+1)

Page.previous_page_number()

返回上一頁的索引,其餘同上

Page.start_index()

返回當前頁,第一個對象的索引。

Page.end_index()

道理同上。

3)屬性

Page.object_list

當前頁對象列表

Page.number

當前頁的索引

相關文章
相關標籤/搜索