37 lines
949 B
Python
37 lines
949 B
Python
# skit_panel_backend/utils/pagination.py
|
|
|
|
def paginate(data_list: list, page: int, page_size: int):
|
|
"""
|
|
一个简单的列表分页工具。
|
|
|
|
:param data_list: 要分页的完整列表。
|
|
:param page: 当前页码 (从1开始)。
|
|
:param page_size: 每页的项目数。
|
|
:return: 一个包含分页后数据和总数的字典。
|
|
"""
|
|
if not isinstance(data_list, list):
|
|
# 如果输入不是列表,返回空结果
|
|
return {"total": 0, "list": []}
|
|
|
|
total = len(data_list)
|
|
|
|
# 确保页码和页面大小是正整数
|
|
page = max(1, page)
|
|
page_size = max(1, page_size)
|
|
|
|
start = (page - 1) * page_size
|
|
|
|
# 防止切片索引越界
|
|
if start >= total:
|
|
return {"total": total, "list": []}
|
|
|
|
end = start + page_size
|
|
|
|
paginated_list = data_list[start:end]
|
|
|
|
return {
|
|
"total": total,
|
|
"list": paginated_list
|
|
}
|
|
|