分頁是Web應用經常使用的手法,Django提供了一個分頁器類Paginator(django.core.paginator.Paginator),能夠很容易的實現分頁的功能。該類有兩個構造參數,一個是數據的集合,另外一個是每頁放多少條數據。Paginator的基本使用以下:python
$python manage.py shellweb
>>> from django.core.paginator import Paginatorshell
>>> objects = ['john', 'paul', 'george', 'ringo']django
>>> p = Paginator(objects, 2) #每頁兩條數據的一個分頁器less
>>> p.count #數據總數code
4orm
>>> p.num_pages #總頁數it
2io
>>>p.page_range #頁碼的列表class
[1, 2]
>>> page1 = p.page(1) #第1頁
>>> page1
<Page 1 of 2>
>>> page1.object_list #第1頁的數據
['john', 'paul']
>>> page2 = p.page(2)
>>> page2.object_list #第2頁的數據
['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() # 本頁第一條記錄的序數(從1開始)
3
>>> page2.end_index() # 本頁最後錄一條記錄的序數(從1開始)
4
>>> p.page(0) #錯誤的頁,拋出異常
...EmptyPage: That page number is less than 1
>>> p.page(3) #錯誤的頁,拋出異常
...EmptyPage: That page contains no results
>>>p.page('a') #錯誤的頁,拋出異常
...PageNotAnInteger: That page number is not an integer