2016-04-24 43 views
1

我在這裏找到:http://pythonhosted.org/Flask-paginate/Python的燒瓶PAGINATE使用模塊燒瓶PAGINATE頁面上返回的結果太多

我能夠返回結果,我的分頁開始用正確的頁數,但其目前展示每頁69個結果。該文檔顯示per_page =,但這隻影響我的起始頁碼,這是正確的。我爲我的數據庫使用SQL-Alchemy。

@search.route('/search') 
def search(): 

    page, per_page, offset, inner_window = get_page_items() 

    links = Item.query.all() 
    total = Item.query.count() 
    pagination = get_pagination(page=page, 
          per_page=per_page, 


          total = total,   
          format_total=True, 
          format_number=True, 
          record_name='links', 

          ) 

    return render_template('search/searchPage.html', offset=offset, total=total, links=links, pagination=pagination, per_page=per_page, page=page) 

def get_css_framework(): 
    return 'bootstrap3' 

def get_link_size(): 
    return 'sm' #option lg 

def show_single_page_or_not(): 
    return False 

def get_page_items(): 
    page = int(request.args.get('page', 1)) 
    per_page = 10 

    inner_window=10 

    offset = (page) * 10 
    return page, per_page, offset, inner_window 


def get_pagination(**kwargs): 
    kwargs.setdefault('record_name', 'repositories') 

    return Pagination(css_framework=get_css_framework(), 
         link_size=get_link_size(), 
         show_single_page=show_single_page_or_not(), 

         **kwargs 

        ) 

回答

0

如果打印出來page你可能會看到它總是返回1因爲您要訪問request以外的範圍,搜索路由功能,並.get()總是返回1

嘗試這樣的事情......

@search.route('/search') 
    def search(): 
     ... 

     page = int(request.args.get('page', 1)) 
     per_page = 10 
     inner_window = 10 
     offset = page * 10 

     ... 

如果你想繼續使用一個單獨的功能,你需要將request對象傳遞給它以訪問值。

希望這有助於!

+0

還是69%:( – Anekdotin

+0

我將開始與基本實現頁面它們顯示在文檔和開始抽象如果你想知道它的工作原理,你可以編輯它來包含你的視圖和你的數據庫設置? – siegerts

0

我看到你選擇使用燒瓶SQLAlchemy的替代,但希望這個答案可以幫助別人:

你是幾乎沒有 - 你正確捕獲頁面,per_page和偏移(實際上有一個built-in此,您可以使用from flask_paginate import get_page_args導入),但您還需要在查詢中使用per_page和offset。所以,在你的榜樣:

all_links = Item.query.all() 
links_for_render_template = Item.query.limit(per_page).offset(offset) 

這裏有一個完整的例子還有:

from flask_paginate import Pagination, get_page_args 

@search.route('/search') 
def search(): 
    page, per_page, offset = get_page_args() 
    all_links = Item.query.all() 
    links_for_render_template = Item.query.limit(per_page).offset(offset) 

    pagination = get_pagination(page=page, per_page=per_page, offset=offset, total=all_links.count(), record_name='links') 

    return render_template('search/searchPage.html', links=links_for_render_template, pagination=pagination)