def get_paginator_data(paginator, current_page, around_count=3): """ :param paginator: 分頁對象 :param current_page: 當前頁數據 :param around_count: 顯示的頁碼數 :return: 當前頁碼、總頁數、左邊是否有更多頁標記、右邊是否有更多標記 左邊頁碼範圍、右邊頁碼範圍 """ current_page_num = current_page.number # 獲取當前頁面所在的頁碼 total_page_num = paginator.num_pages # 獲取總頁數 left_has_more_page = False # 默認左邊沒有更多頁 right_has_more_page = False # 默認右邊沒有更多頁 # 算出當前頁面左邊的頁碼 left_start_index = current_page_num - around_count left_end_index = current_page_num if current_page_num <= around_count * 2 + 1: left_page_range = range(1, left_end_index) else: left_has_more_page = True left_page_range = range(left_start_index, left_end_index) right_start_index = current_page_num + 1 right_end_index = current_page_num + around_count + 1 if current_page_num >= total_page_num - around_count * 2: right_page_range = range(right_start_index, total_page_num + 1) else: right_has_more_page = True right_page_range = range(right_start_index, right_end_index) return { "current_page_num": current_page_num, "total_page_num": total_page_num, "left_has_more_page": left_has_more_page, "right_has_more_page": right_has_more_page, "left_pages": left_page_range, "right_pages": right_page_range, }