這是乙個完善的python後端分頁器**、能解決使用者百分之八十的web應用分頁實現
class
pagination
(object):
def__init__
(self,current_page,all_count,per_page_num=
2,pager_count=11)
:"""
封裝分頁相關資料
:param current_page: 當前頁
:param all_count: 資料庫中的資料總條數
:param per_page_num: 每頁顯示的資料條數
:param pager_count: 最多顯示的頁碼個數
用法:queryset = model.objects.all()
page_obj = pagination(current_page,all_count)
page_data = queryset[page_obj.start:page_obj.end]
獲取資料用page_data而不再使用原始的queryset
獲取前端分頁樣式用page_obj.page_html
"""try:
current_page =
int(current_page)
except exception as e:
current_page =
1if current_page <1:
current_page =
1 self.current_page = current_page
self.all_count = all_count
self.per_page_num = per_page_num
# 總頁碼
all_pager, tmp =
divmod
(all_count, per_page_num)
if tmp:
all_pager +=
1 self.all_pager = all_pager
self.pager_count = pager_count
self.pager_count_half =
int(
(pager_count -1)
/2) @property
defstart
(self)
:return
(self.current_page -1)
* self.per_page_num
@property
defend
(self)
:return self.current_page * self.per_page_num
defpage_html
(self)
:# 如果總頁碼 < 11個:
if self.all_pager <= self.pager_count:
pager_start =
1 pager_end = self.all_pager +
1# 總頁碼 > 11
else
:# 當前頁如果<=頁面上最多顯示11/2個頁碼
if self.current_page <= self.pager_count_half:
pager_start =
1 pager_end = self.pager_count +
1# 當前頁大於5
else
:# 頁碼翻到最後
if(self.current_page + self.pager_count_half)
> self.all_pager:
pager_end = self.all_pager +
1 pager_start = self.all_pager - self.pager_count +
1else
: pager_start = self.current_page - self.pager_count_half
pager_end = self.current_page + self.pager_count_half +
1 page_html_list =
# 新增前面的n**和ul標籤
''' '
''')return
''.join(page_html_list)
分頁器元件
在頁面顯示分頁資料,需要用到django分頁器元件 from django.core.paginator import paginator paginator物件 paginator paginator user list,10 per page 每頁顯示條目數量 count 資料總個數 num p...
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...