[flask]分頁顯示列表


添加分頁支持的視圖函數

app.py

@app.route('/search') def search(): page = request.args.get('page', 1, type=int) #從查詢字符串獲取當前頁數
    per_page = current_app.config['GOGOTEST_CASE_PRE_PAGE']#每頁數量
    form = SearchForm() keyword = request.args.get('keyword') pagination = TestCase.query.filter_by(creater=keyword).paginate(page, per_page=per_page)#分頁對象當前頁數的記錄列表
    search_result = pagination.items#當前頁數的記錄列表     if search_result: return render_template('auto_test_case.html', pagination=pagination, cases=search_result, form=form) else: return 'Not Found'

注意:

在使用render_template將對象傳給模板文件時,除了傳遞查詢結果,不要忘記傳遞pagination對象

 

知識點:

  tip1:

  Flask_SQLAlchemy提供了簡單的分頁功能 ,使用paginate()查詢方法可以獲取case記錄

為了實現分頁,把之前的查詢執行函數all()換成了paginate(),它接收的兩個最主要的參數是page和per_page

page:當前請求的頁數

per_page:設置每頁返回的記錄數量,為了方便統一修改,這個值從配置變量GOGOTEST_CASE_PRE_PAGE獲取

也可以直接指定它的值:

per_page=15

   tip2: 

  如果沒有 指定page和per_page參數,Flask-SQLAlchemy會自動從查詢字符串中獲取對應查詢參數(page和per_page)的值,如果沒有獲取到,默認的page=1,默認的per_page=20 

   tip3:

  調用 查詢方法 paginate()會返回一個Pagination類實例,它包含分頁的信息,我們將其稱為分頁對象.

對這個pagination對象調用items屬性會以列表的形式返回對應頁數(默認為第一頁)的記錄.

在訪問這個url時,如果在URL后附加了查詢參數page來指定頁數,例如:http://xxxx/?page=2,這時發起請求調用items變量將會獲得第2頁的15條記錄.

 

pagination常用方法:

items

  • 當前頁的元素集合

 

total

  • 匹配的元素總數

 

參考:

flask_sqlalchemy 中的 paginate 實現分頁


免責聲明!

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



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