分頁器元件

2022-05-07 05:36:10 字數 4381 閱讀 3652

在頁面顯示分頁資料,需要用到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...