python 数据分页

自定义数据分页

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

posted @ 2024-11-20 14:26  二月雪  阅读(5)  评论(0编辑  收藏  举报