为api设计的分页计算器
api_pagination的Python项目详细描述
为API设计的分页计算器
在构建api时,应使用空的结果集处理出界的页面。现有的解决方案并没有做到这一点。我们设计了api-pagination来从api的角度处理这些边缘情况。
开始
使用pip install api_pagination
安装模块# Load in dependenciesfromapi_paginationimportPaginator# Generate a paginator and get info about a pagepaginator=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 swooppage_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 properlypage_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}}
文档
我们通过包公开Paginator类api_pagination
分页器(总计,每页项数)
用于计算有关项的分页信息的类
- 总计int-项目总数
- 每页项目数int-每页包含多少项目
分页器。获取页面信息(第页)
收集有关给定页面的信息
- 页面int-页面的基于人的索引
- 例如,第1页将用于项目1-10(其中items_per_page=10)
返回:
- ret_valdict-用于获取有关总体信息和页面特定信息的容器
- 总体信息容器
- 第一页int-第一页的基于人的索引
- 例如,对于total=20和items_per_page=10,我们有first_page=1
- 最后一页int-最后一页的基于人的索引
- 例如,对于total=25和items_per_page=10,我们有last_page=3(包括项21-25)
- 页数int-总页数
- 例如,对于total=25和items_per_page=10,我们有pages=3
- 总计int-项目总数
- 页面dict-页面特定信息的容器
- 当前页面int-请求页面的基于人的索引
- 下一页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)
- 前一页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)
页面信息(页面,*args,**kwargs)
helper函数可在不调用多个操作的情况下获取页面信息
- 页面int-要传递到paginator.get_page_info 的页面
- *args-传递给Paginator构造函数的有序参数
- **kwargs-传递给Paginatorconstructor的基于关键字的参数
返回:
返回与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
根据麻省理工学院的许可证。