views.py
@app.route('/')
def index():
page = int(request.args.get('page',1))
paginate = Students.query.paginate(page,2)
stus = paginate.items
return render_template('index.html','stus'=stus,'paginate'=paginate)
页面的参数从请求的查询字符串 request.args中获取,如果不写,则默认为第一页。 Int 保证参数为整数。
为了显示某页中的记录,要把all()换成flask-SQLALchemy提供的paginate()方法。页数为paginate的第一个参数,第二个参数是每页显示的条数,如果没有指出,默认为20个记录。
stus 为要展示的对象
paginate 为一个Pagination类对象
index.html
-
Paginate.pages 显示一共有多少页
-
Paginate.page 当前页
-
Paginate.has_prev 是否有上一下
-
paginate.prev_num 上一页的id
-
paginate.has_next 是否有下一页
-
Paginate.next_num 下一页的id
-
iter_page:一个迭代器,返回一个在分页导航中显示的页数列表
显示上一个和分页列表和下一页按钮
{% if paginate.has_prev %}
<a href="{{ url_for('user.stu_page') }}?page={{ paginate.prev_num }}">上一页</a>
{% endif %}
{% for i in paginate.iter_pages() %}
<a href="{{ url_for('user.stu_page') }}?page={{ i }}">
{% if not i %}
...
{% else %}
{{ i }}
{% endif %}
</a>
{% endfor %}
{% if paginate.has_next %}
<a href="{{ url_for('user.stu_page') }}?page={{ paginate.next_num }}">下一页</a>
{% endif %}
img
网友评论