包:django.core.paginator
Paginator對(duì)象
- Paginator(列表,int):返回分頁對(duì)象,參數(shù)為列表數(shù)據(jù),每頁數(shù)據(jù)的條數(shù)
屬性
- count:對(duì)象總數(shù)
- num_pages:頁面總數(shù)
- page_range:頁碼列表,從1開始,例如[1, 2, 3, 4]
方法
- page(num):下標(biāo)以1開始,如果提供的頁碼不存在,拋出InvalidPage異常
異常exception
- InvalidPage:當(dāng)向page()傳入一個(gè)無效的頁碼時(shí)拋出
- PageNotAnInteger:當(dāng)向page()傳入一個(gè)不是整數(shù)的值時(shí)拋出
- EmptyPage:當(dāng)向page()提供一個(gè)有效值,但是那個(gè)頁面上沒有任何對(duì)象時(shí)拋出
Page對(duì)象
創(chuàng)建對(duì)象
- Paginator對(duì)象的page()方法返回Page對(duì)象,不需要手動(dòng)構(gòu)造
屬性
- object_list:當(dāng)前頁上所有對(duì)象的列表
- number:當(dāng)前頁的序號(hào),從1開始
- paginator:當(dāng)前page對(duì)象相關(guān)的Paginator對(duì)象
方法
- has_next():如果有下一頁返回True
- has_previous():如果有上一頁返回True
- has_other_pages():如果有上一頁或下一頁返回True
- next_page_number():返回下一頁的頁碼,如果下一頁不存在,拋出InvalidPage異常
- previous_page_number():返回上一頁的頁碼,如果上一頁不存在,拋出InvalidPage異常
- len():返回當(dāng)前頁面對(duì)象的個(gè)數(shù)
- 迭代頁面對(duì)象:訪問當(dāng)前頁面中的每個(gè)對(duì)象
例子
- view
def hero_list(request, pindex):
if pindex == '':
pindex = '1'
heroinfo_list = HeroInfo.objects.all()
paginatior = Paginator(heroinfo_list, 5)
page = paginatior.page(int(pindex))
context = {'page': page}
return render(request, 'booktest/herolist.html', context)
- templates
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for hero in page %}
<li>{{ hero.h_name }}</li>
{% endfor %}
</ul>
<hr/>
{% for index in page.paginator.page_range %}
{% if index == page.number %}
{{ index }}
{% else %}
<a href="/heroList/{{ index }}">{{ index }}</a>
{% endif %}
{% endfor %}
</body>
</html>

image.png