Flask Model 做分页

# 手动做分页
persons = Person.query.offset((page-1)) * per_page).limit(per_page)

# 1.手动翻页
#    offset().limit()
# 数据: 1,2,3,4,5,6,7,8,9,10
# 页码:page=1
# 每页显示数量: per_page=5
# page=1: 1,2,3,4,5  => offset(0).limit(5)
# page=2: 6,7,8,9,10 => offset(5).limit(5)
# page=n: ...        => offset((page-1)*per_page).limit(per_page)

# 使用paginate做分页
persons = Person.query.paginate(page=page,per_page=per_page,error_out=Flase).items

paginate对象的属性:
    items:返回当前页的内容列表
    has_next: 是否还有下一页
    has_prev: 是否还有上一页
    next(error_out=Flase): 返回下一页的Pagination对象
    prev(error_out=Flase): 返回上一页的Pagination对象
    page: 当前页的页码(从1开始)
    pages:总页数
    per_page: 每页显示的数量
    prev_num: 上一页页码数
    next_num: 下一页页码数
    query: 返回创建该Pagination对象的查询对象
    total: 查询返回的记录总数
    
# 2.paginate对象
@blue.route('/paginate/')
def get_pageinate():
    # 页码:默认显示第一页
    page = int(request.args.get('per_page', 1))  # 前端传过来的的page类型是字符串,所以需要int强转
    # per_page: 每页显示数据量
    per_page = int(request.args.get('per_page', 5)) # 前端传过来的per_page类型是字符串,所以需要int强转
    
    # paginate()
    p = User.query,paginate(page=page, per_page=per_page, error_out=Flase)
    # paginate对象的属性:
        items 返回当前页的内容列表
    print(p.items)
    print(page, type(page))
    print(per_page, type(per_page))
    
    
    
    

 

posted @ 2023-06-02 17:04  ji哩咕噜  阅读(34)  评论(0编辑  收藏  举报