Flask-SQLAlchemy中的分页操作

2017-09-05  本文已影响0人  码农小杨

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 }}
上一篇 下一篇

猜你喜欢

热点阅读