Flask用paginate实现数据分页
flask中用paginate可实现数据分页效果,首先梳理一下paginate的知识点。
1.paginate的用法
paginate(page, per_page, error_out=True)
>>>page 当前页数
>>>per_page 每页显示的条数
>>>error_out 是否打印错误信息
2.paginate的属性
a)paginate.page 当前页数
b)paginate.pages 总页数
c)paginate.total 数据总条数
d)paginate.has_prev 是否存在上一页
返回布尔值
e)paginate.has_next 是否存在下一页
返回布尔值
f)paginate.iter_pages() 所有页码
返回列表 如[1, 2, 3, 4]
g)paginate(page, per_page,error_out).items
返回当前页的所有数据
实例
a)视图
@user.route('/manage', methods=['GET', 'POST'])
def manage():
...
page = int(request.args.get('page', 1))
paginate = User.query.join(UserDetail, User.user_id == UserDetail.user_id).filter(
User.username.like("%{}%".format(username)) if username is not None else '',
User.user_type == user_type).paginate(page, PER_PAGE, False)
if paginate.items:
return render_template('memberManage.html', data=paginate.items, paginate=paginate)
else:
return render_template('empty.html', post_type=type_name)
b)html页面解析数据
... <div class="inline-block vertical-middle m-right-xs">
Page {{ paginate.page }} of {{ paginate.pages }} </div>
<ul class="pagination vertical-middle ajax_fPage">
{% if paginate.has_prev %}
<li class="" data-toggle="tooltip" title="首页"><a
href="{{ url_for('user.manage') }}?page=1">
<i class="fa fa-step-backward"></i>
</a>
</li>
<li class="" data-toggle="tooltip" title="上一页">
<a href="{{ url_for('user.manage') }}?page={{ paginate.prev_num }}">
<i class="fa fa-caret-left large"></i>
</a>
</li>
{% else %}
<li class="disabled" data-toggle="tooltip" title="首页">
<a href="#">
<i class="fa fa-step-backward"></i>
</a>
</li>
<li class="disabled" data-toggle="tooltip" title="上一页">
<a href="#">
<i class="fa fa-caret-left large"></i>
</a>
</li>
{% endif %}
{% if paginate.has_next %}
<li data-toggle="tooltip" title="下一页">
<a href="{{ url_for('user.manage') }}?page={{ paginate.next_num }}">
<i class="fa fa-caret-right large"></i></a></li>
<li data-toggle="tooltip" title="尾页">
<a href="{{ url_for('user.manage') }}?page={{ paginate.pages }}">
<i class="fa fa-step-forward"></i>
</a>
</li>
{% else %}
<li class="disabled" data-toggle="tooltip" title="下一页">
<a href="#">
<i class="fa fa-caret-right large"></i>
</a>
</li>
<li class="disabled" data-toggle="tooltip" title="尾页">
<a href="#"><i class="fa fa-step-forward"></i></a>
</li>
{% endif %}
...
大功告成

浙公网安备 33010602011771号