分頁
分頁庫Paginator的基本語法
django提供了分頁的工具,存在于django.core中
Paginator: 數(shù)據(jù)分頁工具
Page:具體的某一頁
Paginator:
對象創(chuàng)建: Paginator(數(shù)據(jù)集,每一頁數(shù)據(jù))
屬性:
count 計(jì)算和
num_pages: 頁面總和
page_range: 頁碼列表,從1開始
方法:
page(頁碼):獲取的一個page對象,頁碼不存在則拋出invalidPage的異常
常見錯誤
invalidPage:page()傳遞無效頁碼
PageNotAnInteger:Page()傳遞的不是整數(shù)
Empty:page()傳遞的值有效,但是沒有數(shù)據(jù)
page對象
page:
對象獲取,通過Paginator的page()方法獲得
屬性:
object_list: 當(dāng)前頁面上所有的數(shù)據(jù)對象
number: 當(dāng)前頁的頁碼值
paginator: 當(dāng)前page關(guān)聯(lián)的Paginator對象
方法:
has_next() 判斷是否有下一頁
has_previous(): 判斷是否有上一頁
has_other_pages(): 判斷是否有上一頁或下一頁
next_page_number(); 返回下一頁的頁碼
previous_page_number(): 返回上一頁的頁碼
len(): 返回當(dāng)前也的數(shù)據(jù)的個數(shù)
Paginator對象和Page對象的關(guān)系
如下有學(xué)生表,學(xué)生表中有25條數(shù)據(jù),通過分頁,每一個6條數(shù)據(jù),去實(shí)現(xiàn)分頁的功能

Paginator對象和Page對象的關(guān)系
實(shí)例
視圖函數(shù)中的使用
from django.core.paginator import Paginator
def users(request):
if request.method == 'GET':
# 使用切片完成分頁功能
# sql:offset limit,select * from users offset 3 limit 3
page_number = int(request.GET.get('page', 1))
# users = Users.objects.all()[3 * (page_number - 1):3 * page_number]
users = Users.objects.all()
# 使用Paginator分頁
paginator = Paginator(users, 3)
# 獲取某一頁的信息
page = paginator.page(page_number)
return render(request, 'users.html', {'page': page})
模板中的使用使用
{% extends 'base.html' %}
{% block title %}
用戶管理界面
{% endblock %}
{% block content %}
<P>已有賬號</P>
<table>
<thead>
<th>id</th>
<th>用戶名</th>
<th>創(chuàng)建時間</th>
</thead>
<tbody>
{% for u in page %}
<tr>
<td>{{ u.id }}</td>
<td>{{ u.username }}</td>
<td>{{ u.create_time | date:'Y-m-d' }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<p>當(dāng)前頁:{{ page.number }}</p>
<p>頁碼:
{% for i in page.paginator.page_range %}
<a href="{% url 'users:users' %}?page={{i}}">{{i}}</a>
{% endfor %}
</p>
<p>
{% if page.has_previous %}
<a href="{% url 'users:users' %}?page={{ page.previous_page_number}}">上一頁</a>
{% endif %}
{% if page.has_next %}
<a href="{% url 'users:users' %}?page={{ page.next_page_number}}">下一頁</a>
{% endif %}
</p>
{% endblock %}

分頁.gif