Flask 分页
1.手动分页
# 1.手动翻页
# offset( ).Limit()
# 数据: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20#页码: page=1
# 每页显示数量: per_page=5
# page=1 : 1,2,3,4 ,5 => offset(e).limit(5)
# page=2 : 6,7,8,9,10 => offset(5 ).limit(5)
# page=3 : 11,12,13,14,15 => offset(10).limit(5)
# page=4 : 16,17,18,19,20 => offset(15).Limit(5)
#
# ...
# page=n : => offset((page-1 )*per_page ).limit(per_page)
# page 页数 需要前端提供
# per_page 每一页显示的数量可以前端提供,也可以后端给默认值
2.使用paginate做分页
# 2.paginate对象
@blueprints1.route('/paginate/')
def get_paginate():
'''
page = request.args.get('page', 1) # per_page:每页显示数据量
per_page = request.args.get('per_page', 5)
print(page, type(page)) # 需要注意获取导的是字符串,需要加int 强制转换
print(per_page, type(per_page))
# 2 <class 'str'>
# 5 <class 'str'>
'''
# 页码:默认显示第一页
page = int(request.args.get('page', 1))
# per_page:每页显示数据量
per_page = int(request.args.get('per_page', 5))
p = User.query.paginate(page=page, per_page=per_page, error_out=False) # 返回一个paginate对象
# paginate对象的属性:
# items:返回当前页的内容列表 返回列表
print(p.items)
# has_next:是否还有下一页 返回True或False
print(p.has_next)
# has_prev:是否还有上一页 返回True或False
print(p.has_prev)
# next(error_out=False):返回下一页的Pagination对象
print(p.next(error_out=False)) # p.next(error_out=False).items 可以获取到下一页的数据内容
# prev(error_out=False):返回上一页的Pagination对象
print(p.prev(error_out=False)) # prev(error_out=False).items 可以获取到上一页的数据内容
# page:当前页的页码(从1开始)
print(p.page)
# pages:总页数
print(p.pages)
# per_page:每页显示的数量
print(p.per_page)
# prev_num: 上一页页码数
print(p.prev_num)
# next_num: 下一页页码数
print(p.next_num)
# total:查询返回的记录总数
print(p.total)
return 'success!'
'''
paginate对象的属性:
items:返回当前页的内容列表
has_next:是否还有下一页
has_prev:是否还有上一页
next(error_out=False):返回下一页的Pagination对象prev(error_out=False):返回上一页的Pagination对象
page:当前页的页码(从1开始)
pages:总页数
per_page:每页显示的数量
prev_num: 上一页页码数
next_num: 下一页页码数
total:查询返回的记录总数
'''