Flask-paginate插件问题:所有结果都显示在同一页

时间:2016-07-11 18:02:08

标签: python flask sqlalchemy

我在我的应用中使用Flask-paginate进行分页。结果从数据库中获取。问题是所有结果都显示在第一页上,当我再次点击下一页编号时,所有结果都显示在该页面上。网址中的页码更改为2/3/4等。我this作为参考。这是我的代码片段

from flask.ext.paginate import Pagination
@app.route('/users')
def users_page():

    page_size = 25
    limit = 100

    search = False
    q = request.args.get('q')
    if q:
        search = True
    try:
        page = int(request.args.get('page', 1))
    except ValueError:
        page = 1
    with session_scope() as session:
        users = users_dao.get_users(session, limit=limit)
        pagination = Pagination(page=page, total=len(users), per_page=page_size, search=search, record_name='users')
        return render_template("users.html", users=users, pagination=pagination)

html页面上的分页信息显示为displaying 1-25 results of 100。点击第2页时,会显示displaying 25-50 results of 100。因此,不知何故,分页已经在total和per_page的基础上计算出应该显示多少结果但是在某个地方它没有强制显示行数。知道如何不在每个页面上显示所有行吗?

PS:我想使用flask-paginate而不是flask-sqlalchemy。

模板看起来像

{{ pagination.info }}
<table class="table">
    <thead>
        <tr>
            <th>User Name</th>
            <th>Phone</th>
            <th>City</th>
            <th>Country</th>
        </tr>
    </thead>
    <tbody>
        {% for user in users %}
        <tr>
            <td>{{ user.user_name }}</td>
            <td>{{ user.phone_number }}</td>
            <td>{{user.city}}</td>
            <td>{{user.country}}</td>
        </tr>
        {% endfor %}
    </tbody>
</table>
{{ pagination.links }}

我要添加的另一件事是我的情况下limit和page_size是两个不同的东西。 Limit是我想从数据库中获取的最大结果数。 Page_size是我想在每个页面上显示的结果数。

0 个答案:

没有答案