Flask-SQLALchemy的Pagination对象可以方便的进行分页,
对一个查询对象调用pagenate(page, per_page=20, error_out=True)函数可以得到pagination对象,第一个参数表示当前页,第二个参数代表每页显示的数量,error_out=True的情况下如果指定页没有内容将出现404错误,否则返回空的列表
#从get方法中取得页码
page = request.args.get('page', 1, type = int)
#获取pagination对象
pagination = Post.query.order_by(Post.timestamp.desc()).paginate(page, per_page=10, error_out = False)
#pagination对象的items方法返回当前页的内容列表
posts = pagination.items
pagination对象常用方法:
has_next :是否还有下一页
has_prev :是否还有上一页
items : 返回当前页的所有内容
next(error_out=False) : 返回下一页的Pagination对象
prev(error_out=False) : 返回上一页的Pagination对象
page : 当前页的页码(从1开始)
pages : 总页数
per_page : 每页显示的数量
prev_num : 上一页页码数
next_num :下一页页码数
query :返回 创建这个Pagination对象的查询对象
total :查询返回的记录总数
iter_pages(left_edge=2, left_current=2, right_current=5, right_edge=2)
我们还可以为pagination新增我们自定义的属性:
coursing_gross = paginate.query.all()
coursing_all = 0
for coursing in coursing_gross:
if coursing.coursing_count > 0:
coursing_all += coursing.coast_total
paginate.coursing_all = '{:.2f}'.format(coursing_all)
按照上面定义之后,我们可以在模板中直接使用
{{ paginate.coursing_all }}