Flask教程:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-ix-pagination
SOURCE
分页使用的是Flask-SQLAlchemy的功能,很简单。在进行分页之前,首先实现提交新微博的功能。
提交新post
定义新的表单类 app/forms.py
在主页中添加该表单 app/templates/index.html
在视图中接收表单数据并保存到数据库 app/views.py
在主页中显示所有微博posts = g.user.followed_posts().all()
。使用其替换之前到假数据。all()
方法是把g.user.followed_posts()
返回的sqlalchemy查询对象转成一个列表。
分页实现
分页要使用posts = g.user.followed_posts().paginate(page, POSTS_PER_PAGE, False)
-
paginate()的参数: page 是第几页;POSTS_PER_PAGE 每页显示的数量;False 是错误标志。当发生错误时,如果是False返回空列表,如果是True,转到404页面。
-
POSTS_PER_PAGE写入到config.py中,便于以后更改。 page通过使用该句到方法参数传入。
-
paginate()返回个Pagination对象。通过__items__获取到成员列表。
-
Pagination用于导航的几个属性:
-
has_next: True if there is at least one more page after the current one
-
has_prev: True if there is at least one more page before the current one
-
next_num: page number for the next page
-
prev_num: page number for the previous page
视图中路由的设置app/views.py
导航链接 app/templates/index.html
然后就是还有一些具体编码工作。比如在用户界面,user.html,中分页现实其所有微博;添加导航链接。这都和index页面类似。