美文网首页
Flask 分页功能的实现paginate

Flask 分页功能的实现paginate

作者: Fizz翊 | 来源:发表于2018-10-11 16:44 被阅读382次

    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

    相关文章

      网友评论

          本文标题:Flask 分页功能的实现paginate

          本文链接:https://www.haomeiwen.com/subject/vjnbaftx.html