在頁面顯示分頁資料,需要用到django分頁器元件
from django.core.paginator import paginator
paginator物件: paginator = paginator(user_list, 10)
# per_page: 每頁顯示條目數量
# count: 資料總個數
# num_pages:總頁數
# page_range:總頁數的索引範圍,如: (1,10),(1,200)
# page: page物件
page物件:page=paginator.page(1)
# object_list 分頁之後的資料列表
# number 當前頁
# paginator paginator物件
from django.shortcuts import render,httpresponse
# create your views here.
from django.core.paginator import paginator, emptypage, pagenotaninteger
def index(request):
'''批量匯入資料:
booklist=
for i in range(100):
book.objects.bulk_create(booklist)
''''''分頁器的使用:
book_list=book.objects.all()
paginator = paginator(book_list, 10)
print("count:",paginator.count) # 資料總數
print("num_pages",paginator.num_pages) # 總頁數
print("page_range",paginator.page_range) # 頁碼的列表
page1=paginator.page(1) # 第1頁的page物件
for i in page1: # 遍歷第1頁的所有資料物件
print(i)
print(page1.object_list) # 第1頁的所有資料
page2=paginator.page(2)
# 拋錯
# page=paginator.page(12) # error:emptypage
# page=paginator.page("z") # error:pagenotaninteger
'''book_list=book.objects.all()
paginator = paginator(book_list, 10)
page = request.get.get('page',1)
currentpage=int(page)
try:
print(page)
book_list = paginator.page(page)
except pagenotaninteger:
book_list = paginator.page(1)
except emptypage:
book_list = paginator.page(paginator.num_pages)
return render(request,"index.html",)
分頁器
"""
顯示左5,右5,總共11個頁,
1 如果總頁碼大於11
1.1 if 當前頁碼減5小於1,要生成1到12的列表(顧頭不顧尾,共11個頁碼)
page_range=range(1,12)
1.2 elif 當前頁碼+5大於總頁碼,生成當前頁碼減10,到當前頁碼加1的列表
(顧頭不顧尾,共11個頁碼)
page_range=range(
paginator.num_pages-10,
paginator.num_pages+1
)1.3 else 生成當前頁碼-5,到當前頁碼+6的列表
page_range=range(
current_page_num-5,
current_page_num+6
)2 其它情況,生成的列表就是pageinator的page_range
page_range=paginator.page_range
'''
def index(request):
book_list=book.objects.all()
paginator = paginator(book_list, 15)
page = request.get.get('page',1)
currentpage=int(page)
# 如果頁數十分多時,換另外一種顯示方式
if paginator.num_pages>11:
if currentpage-5<1:
pagerange=range(1,11)
elif currentpage+5>paginator.num_pages:
pagerange=range(currentpage-5,paginator.num_pages+1)
else:
pagerange=range(currentpage-5,currentpage+5)
else:
pagerange=paginator.page_range
try:
print(page)
book_list = paginator.page(page)
except pagenotaninteger:
book_list = paginator.page(1)
except emptypage:
book_list = paginator.page(paginator.num_pages)
return render(request,"index.html",locals())
def page_test(request):
# book_list=
# for i in range(100):
# book=book(name='book%s'%i,price=10+i,pub_date='2018-09-18',publish_id=1)
# book.objects.bulk_create(book_list,10)
book_list=book.objects.all()
# 生成paginator物件,傳入書籍列表,每頁10條資料
paginator=paginator(book_list,3)
# 總頁碼數
print(paginator.num_pages)
# 頁碼列表
print(paginator.page_range)
# 總資料
print(paginator.count)
# 獲取頁面傳來的頁碼
current_page=int(request.get.get('page',1))
page_range=
# 左5 右5
# 獲取頁面傳來的頁碼的page物件
try:
page=paginator.page(current_page)
# 迴圈列印出當頁物件
for i in page:
print(i)
except exception as e:
current_page=1
page = paginator.page(1)
if paginator.num_pages>11:
if current_page+5>paginator.num_pages:
page_range=range(paginator.num_pages-10,paginator.num_pages+1)
elif current_page-5<1:
page_range=range(1,12)
else:
page_range=range(current_page-5,current_page+6)
else:
page_range=paginator.page_range
return render(request,'page_test.html',locals())
分頁器元件
這是乙個完善的python後端分頁器 能解決使用者百分之八十的web應用分頁實現 class pagination object def init self,current page,all count,per page num 2,pager count 11 封裝分頁相關資料 param cur...
Django元件 分頁器
批量匯入資料 booklist for i in range 100 book.objects.bulk create booklist 分頁器的使用 book list book.objects.all paginator paginator book list,10 print count pa...
Django元件 分頁器
批量匯入資料 booklist for i in range 100 book.objects.bulk create booklist 分頁器的使用 book list book.objects.all paginator paginator book list,10 print count pa...