为api设计的分页计算器

api_pagination的Python项目详细描述


Build Status

为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}}

文档

我们通过包公开Paginatorapi_pagination

分页器(总计,每页项数)

用于计算有关项的分页信息的类

  • 总计int-项目总数
  • 每页项目数int-每页包含多少项目

分页器。获取页面信息(第页)

收集有关给定页面的信息

  • 页面int-页面的基于人的索引
    • 例如,第1页将用于项目1-10(其中items_per_page=10

返回:

  • ret_valdict-用于获取有关总体信息和页面特定信息的容器
    • 总体信息容器
    • 第一页int-第一页的基于人的索引
      • 例如,对于total=20items_per_page=10,我们有first_page=1
    • 最后一页int-最后一页的基于人的索引
      • 例如,对于total=25items_per_page=10,我们有last_page=3(包括项21-25)
    • 页数int-总页数
      • 例如,对于total=25items_per_page=10,我们有pages=3
    • 总计int-项目总数
  • 页面dict-页面特定信息的容器
    • 当前页面int-请求页面的基于人的索引
    • 下一页int|None-如果在这一页之后还有另一页,next_page将是该页的基于人的索引
      • 例如,对于total=25items_per_page=10page=2,我们有next_page=3(包括项目21-25)
      • 当在最后一页时(例如total=25items_per_page=10page=3next_page将是None
      • 如果我们在界限之下(例如page=-1),那么next_page将是第一页(page=1
    • 前一页int|None-如果在此页之前还有另一页,previous_page将是该页的基于人的索引
      • 例如,对于total=25items_per_page=10page=2,我们有previous_page=1(包括项1-10)
      • 当在第一页时(例如total=25items_per_page=10page=1),那么previous_page将是None
      • 如果我们超过了界限(例如total=25items_per_page=10page=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

根据麻省理工学院的许可证。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ线程调试   maven中的java概要文件选择要内置的文件取决于maven中的概要文件   Java正则表达式:在字符串中替换特定类型的url?   带有WSS4JOutInterceptor的java CXF安全多密钥库   http google安全浏览查找java api代码   在java中用一个字符替换多个单个字符?   java JMC飞行记录器不显示自定义方法   java如何在哈希映射中多次添加相同的数据值?   java spring引导运行时错误与org。springframework。靴子自动配置。胡子MustacheServletWebConfiguration。mustacheViewResolver   如何在java中将xml标记存储为数组   java检查字符串是否包含字母表中的所有字母   java需要一些关于二进制切块搜索的帮助   java TryCatch异常处理未提供正确的响应   java用xmlbeans创建并填充xml文档   java为什么在PHP和安卓中尝试使用socket时连接被拒绝?   java在运行时加载ASM生成的类   Java Swing,制作gridlayout填充父级?   有办法让泛型持久化吗?[Java控制台]