为API设计的分页计算器
项目描述
为API设计的分页计算器
在构建API时,应该用空结果集来处理越界页面。现有的解决方案并没有这样做。我们从API的角度设计了api-pagination来处理这些边缘情况。
入门
使用以下命令安装模块:pip install api_pagination
# Load in dependencies
from api_pagination import Paginator
# Generate a paginator and get info about a page
paginator = Paginator(total=100, items_per_page=10)
page_info = paginator.get_page_info(page=2)
{
'overall': {
'first_page': 1,
'last_page': 10,
'pages': 10,
'total': 100
},
'page': {
'current_page': 2,
'next_page': 3,
'previous_page': 1
}
}
# Use a classmethod to get info in one fell swoop
page_info = Paginator.page_info(page=1, total=100, items_per_page=10)
{
'overall': {
'first_page': 1,
'last_page': 10,
'pages': 10,
'total': 100
},
'page': {
'current_page': 1,
'next_page': 2,
'previous_page': None
}
}
# Handle out of bounds properly
page_info = Paginator.page_info(page=20, total=100, items_per_page=10)
{
'overall': {
'first_page': 1,
'last_page': 10,
'pages': 10,
'total': 100
},
'page': {
'current_page': 20,
'next_page': None,
'previous_page': 10
}
}
文档
我们通过我们的包api_pagination公开了Paginator类
Paginator(total, items_per_page)
计算项目分页信息的类
total int - 总项目数量
items_per_page int - 每页包含的项目数量
paginator.get_page_info(page)
收集关于给定页面的信息
page int - 基于人类的页面索引
例如,第1页将是第1-10项(其中items_per_page=10)
返回
ret_val dict - 包含整体信息和页面特定信息的容器
overall dict - 包含整体信息的容器
first_page int - 第一个页面的基于人类的索引
例如,当 total=20 和 items_per_page=10 时,我们得到 first_page=1
last_page int - 最后页面的基于人的索引
例如,当 total=25 和 items_per_page=10 时,我们得到 last_page=3 (包括项目 21-25)
pages int - 总页数
例如,当 total=25 和 items_per_page=10 时,我们得到 pages=3
total int - 总项目数
page dict - 页面特定信息的容器
current_page int - 请求页面的基于人的索引
next_page int|None - 如果此页面之后还有其他页面,next_page 将是该页面的基于人的索引
例如,当 total=25,items_per_page=10,和 page=2 时,我们得到 next_page=3 (包括项目 21-25)
当处于最后一页(例如 total=25,items_per_page=10,page=3)时,next_page 将为 None
如果我们低于范围(例如 page=-1),则 next_page 将是第一页(page=1)
previous_page int|None - 如果此页面之前还有其他页面,previous_page 将是该页面的基于人的索引
例如,当 total=25,items_per_page=10,和 page=2 时,我们得到 previous_page=1 (包括项目 1-10)
当处于第一页(例如 total=25,items_per_page=10,page=1)时,则 previous_page 将为 None
如果我们超出范围(例如 total=25,items_per_page=10,page=4),则 previous_page 将是最后一页(page=3)
Paginator.page_info(page, *args, **kwargs)
获取页面信息而不调用多个操作的辅助函数
page int - 要传递给 paginator.get_page_info 的页面
*args - 要传递给 Paginator 构造函数的有序参数
**kwargs - 要传递给 Paginator 构造函数的关键字参数
返回
返回与 paginator.get_page_info 相同的格式
示例
page_info = Paginator.page_info(page=1, total=100, items_per_page=10)
# Same as
# paginator = Paginator(total=100, items_per_page=10)
# page_info = paginator.get_page_info(page=1)
贡献
在没有正式风格指南的情况下,请注意维护现有的编码风格。为任何新的或更改的功能添加单元测试。通过 ./test.sh 进行测试。
许可证
版权(c)2015 Underdog.io
在 MIT 许可下授权。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源代码分布
api_pagination-1.0.0.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 481674002f8899087d85ab526ac86dab94ba8888923e981c5b2646773cf2191d |
|
MD5 | 25944bfa44ad2a7708089bdfc0bd50c4 |
|
BLAKE2b-256 | 0bee338b212113db7e8effe309640a319a8468ad2408ad9f5b0e61ed4744e492 |
api_pagination-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2e88c5452aa20787ec442d4e7891854050e6ef6f959f10a355aaa695cce02d88 |
|
MD5 | bf1dc7c8011e0747aa409e4e85c38a20 |
|
BLAKE2b-256 | 4f29738a70c1b1336b758441c13c1bd80704861ecb06131825c1bef22a61bae1 |