class pagination:def __init__(self, page, page_total, per_one_page=15, max_page=11):
''':param page: 當前頁
:param page_total: 總頁數
:param per_one_page: 沒有顯示的條數
:param page_max: 最大分頁標籤數
'''# 獲取當前頁面
try:
page = int(page)
if page < 0:
page = 1
except exception as e:
print(e)
page = 1
self.page = page
# 沒有顯示的內容條數
self.per_one_page = per_one_page
# 最大分頁標籤數
self.max_page = max_page
# 最大分頁標籤的一半
self.half_page = self.max_page // 2
page_total, more = divmod(page_total, per_one_page)
self.page_total = page_total
# 總頁數
if more:
self.page_total += 1
# 當前分頁標籤起始和結束值
# 頁面總數小於最大顯示數
if page_total < self.max_page:
self.page_start = 1
self.page_end = self.page_total
else:
# 當前頁面小於分頁最大顯示數量的一半,
if self.page - self.half_page < 0:
self.page_start = 1
self.page_end = self.max_page
# 當前頁面大於總頁面數量減去最大分頁數量的一半
elif page + self.half_page > page_total:
self.page_end = page_total
self.page_start = page_total - max_page
else:
# 正常取值
self.page_start = page - self.half_page
self.page_end = page + self.half_page
# 取物件開始索引
@property
def start(self):
return (self.page - 1) * self.per_one_page
# 取物件結束索引
@property
def end(self):
return self.page * self.per_one_page
# 獲取分頁標籤
@property
def page_tag(self):
# 頁面分頁標籤列表
pager_li =
if self.page > 1:
last_page = '«
'.format(self.page - 1)
else:
# 當前頁是第一頁
last_page = '«
' # 迴圈生成分頁標籤
for i in range(self.page_start, self.page_end + 1):
if i == self.page:
'.format(i, i))
else:
'.format(i, i))
if self.page + 1 < self.page_total:
next_page = '»
'.format(self.page + 1)
else:
# 當前頁是最後一頁
next_page = '»
' # 所有標籤聯合
pager = ' '.join(pager_li)
return pager
Django中的分頁
直接看 吧,還算比較簡單 先確認資料量有多少 根據頁面顯示資料的多少來分割資料,得到頁面的開始資料和結束資料 根據開始和截止資料去切片資料,並且得到總共的頁碼數 根據一頁顯示多少頁碼和當前頁碼數,得到開始和截止的頁碼 內容為字串拼湊的html標籤,並拼接到一起 匯入mark safe模組,將字串轉化...
Django中的分頁
直接看 吧,還算比較簡單 先確認資料量有多少 根據頁面顯示資料的多少來分割資料,得到頁面的開始資料和結束資料 根據開始和截止資料去切片資料,並且得到總共的頁碼數 根據一頁顯示多少頁碼和當前頁碼數,得到開始和截止的頁碼 內容為字串拼湊的html標籤,並拼接到一起 匯入mark safe模組,將字串轉化...
Django中的分頁
django中分頁需要匯入分頁的工具,存在於django.core中,所以導包需要輸入 from django.core paginator import paginatorpaginator分別有三條屬性 count 記錄資料的總條數 num pages 記錄總頁數 page range 頁碼範圍...