init
This commit is contained in:
36
backend/utils/pagination.py
Normal file
36
backend/utils/pagination.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user