大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

flask_sqlalchemy 中的 paginate 实现分页

在使用flask进行开发的过程是不免要涉及到分页功能的开发,我使用的是flask_sqlalchemy,对于继承自flask_sqlalchemy.Model的类,都有一个paginate(page=None, per_page=None, error_out=True, max_per_page=None)方法来获得一个flask_sqlalchemy.Pagination对象。

下面我们来简单说明一下paginatePagination的使用。

paginate

paginate(page=None, per_page=None, error_out=True, max_per_page=None)
这边说明一下这个方法对应的参数:

  • page
    • 指定页码,从1开始
  • per_page
    • 每一页有几个项
  • error_out(默认为True)
    • 是否抛出错误
    • 当其为True时,在以下情况会抛出404
      • 没有匹配项或者page不等于1
      • page1小或者per_page是负数
      • pageper_page不是整数
    • 当其为False
      • pageper_page的默认值分别为201
  • max_per_page
    • 当指定了max_per_page时,per_page会受到这个值的限制(不知道是什么场景下使用,求指点)

Pagination

Pagination是调用paginate方法后返回的对象。它拥有以下方法,我们可以通过它快速地实现分页的功能。

它拥有以下属性和方法。

  • has_next
    • 是否还有下一页
  • has_prev
    • 是否还有下一页
  • items
    • 当前页的元素集合
  • next(error_out=False)
    • 返回下一页的Pagination对象
  • next_num
    • 下一页的页码
  • page
    • 当前页的页码
  • pages
    • 匹配的元素在当前配置一共有多少页
  • per_page
    • 每一页显示的元素个数
  • prev(error_out=False)
    • 上一页的Pagination对象
  • prev_num
    • 上一页的页码
  • query
    • 创建Pagination对象对应的query对象
  • total
    • 匹配的元素总数

看完相信你大概能知道分页如何实现了吧。

欢迎留言指点交流

ReadMore