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 %}
...

 大功告成

參考:https://www.jianshu.com/p/a68d4e6a20d1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM