自定义数据分页
def paginate_data(data_list, size_page, current_page):
"""
数据分页函数
:param data_list: list, 数据列表
:param size_page: int, 每页的数量
:param current_page: int, 当前页码
:return: tuple, (总页数, 当前页码, 当前页的数据列表)
"""
if size_page <= 0:
raise ValueError("每页数量必须大于0")
if current_page <= 0:
raise ValueError("当前页码必须大于0")
# 计算总页数
total_page = (len(data_list) + size_page - 1) // size_page
# 校正当前页码
current_page = min(current_page, total_page)
# 计算当前页数据的起始索引和结束索引
start_index = (current_page - 1) * size_page
end_index = start_index + size_page
# 获取当前页的数据列表
result_data_list = data_list[start_index:end_index]
return total_page, current_page, result_data_list
# 示例用法
data_list = [i for i in range(100)] # 0到99的数
size_page = 10
current_page = 3
total_page, current_page, result_data_list = paginate_data(data_list, size_page, current_page)
print(f"总页数: {total_page}")
print(f"当前页: {current_page}")
print(f"当前页数据列表: {result_data_list}")
django Paginator库 数据分页
from django.core.paginator import Paginator
def paginate_data(data_array, _size, _page, _limit_max=100):
"""
data_array:要进行分页的数组对象(tuple/list/QuerySets)
_size:每页的数据量(条数/每页)
_page: 当前页数
_limit_max=100 # 指定限制每页的最大数量
"""
_size = _size_max if _size > _size_max else _size
paginator = Paginator(obj_set, _size)
_max_page = paginator.num_pages # 获取最大的页数
_page = _max_page if _page > _max_page else _page
page_datas = paginator.get_page(_page) # 获取当前页的数据
# datas = [_ for _ in _page_datas] # 多余的一步,方便理解而已
# data_lenght = paginator.count() # 跟len()方法一个意思
return page_datas