目錄
分頁器代碼說明
簡(jiǎn)單demo
源碼等資料獲取方法
分頁器代碼說明
import os
import random
# 需要導(dǎo)入分頁器類
from django.core.paginator import Paginator, EmptyPage
# 導(dǎo)入配置django配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dailyfresh.settings')
iterable_obj = [random.randint(1, 100) for i in range(45)] # 必須為可迭代對(duì)象,比如 QuerySet, list, tuple
print(iterable_obj)
# 實(shí)例化分頁器
paginator = Paginator(object_list=iterable_obj, per_page=20)
# 每頁顯示數(shù)據(jù)量
print("每頁顯示數(shù)據(jù)量:%s" % paginator.per_page)
# 總頁數(shù)
print("總頁數(shù):%s" % paginator.num_pages)
# 數(shù)據(jù)總數(shù)
print("數(shù)據(jù)總數(shù):%s" % paginator.count)
# 獲取某頁的page對(duì)象,如果為不存在的頁碼會(huì)拋EmptyPage異常
try:
page_obj = paginator.page(random.randint(1, 4))
except EmptyPage:
page_obj = paginator.page(1)
print("[異常]獲取page對(duì)象超出范圍")
print(page_obj)
print("通過page對(duì)象獲取分頁器實(shí)例", page_obj.paginator)
# 獲取當(dāng)前頁碼
print("獲取當(dāng)前頁碼:%s" % page_obj.number)
# 獲取當(dāng)前頁內(nèi)容
print("獲取當(dāng)前頁內(nèi)容:%s" % page_obj.object_list)
# 校驗(yàn)是否有上一頁,返回布爾值
print("是否有上一頁:%s" % page_obj.has_previous())
# 上一頁頁碼。如果無上一頁,則拋錯(cuò)
print("上一頁頁碼:%s" % page_obj.previous_page_number())
# 校驗(yàn)是否有下一頁,返回布爾值
print("是否有下一頁:%s" % page_obj.has_next())
# 下一頁頁碼。如果無下一頁,則拋錯(cuò)
print("下一頁頁碼:%s" % page_obj.next_page_number())
執(zhí)行結(jié)果如下:
簡(jiǎn)單demo
定義視圖
from django.views import View
class DemoView(View):
def get(self, request, page_num):
iterable_obj = [i for i in range(45)]
# 對(duì)數(shù)據(jù)進(jìn)行分頁
paginator = Paginator(iterable_obj, 10)
cur_page = paginator.page(page_num)
content = {
"cur_page": cur_page,
}
return render(request, "demo.html", content)
添加路由
from django.urls import re_path, path
from apps.goods import views
# 定義命名空間
app_name = "goods"
urlpatterns = [
re_path("demo_list/(?P<page_num>\d+)", views.DemoView.as_view(), name="demo_list")
]
添加demo.html模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- 展示每頁信息 -->
<ul>
{% for v in cur_page.object_list %}
<li>{{v}}</li>
{% endfor %}
</ul>
<!-- 生成頁碼信息 -->
<div>
{% if cur_page.has_previous %}
<a href="{% url 'goods:demo_list' cur_page.previous_page_number %}">上一頁</a>
{% endif %}
{% for page_num in cur_page.paginator.page_range %}
<a href="{% url 'goods:demo_list' page_num %}">{{ page_num }}</a>
{% endfor %}
{% if cur_page.has_next %}
<a href="{% url 'goods:demo_list' cur_page.next_page_number %}">下一頁</a>
{% endif %}
</div>
</body>
</html>
界面第5頁展示如下:
源碼等資料獲取方法
?各位想獲取源碼的朋友請(qǐng)點(diǎn)贊 + 評(píng)論 + 收藏,三連!文章來源:http://www.zghlxwxcb.cn/news/detail-550585.html
三連之后我會(huì)在評(píng)論區(qū)挨個(gè)私信發(fā)給你們~文章來源地址http://www.zghlxwxcb.cn/news/detail-550585.html
到了這里,關(guān)于Django_Paginator分頁器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!