Python flask paginate在第页返回太多结果

Python flask paginate在第页返回太多结果,python,flask,pagination,Python,Flask,Pagination,Im使用此处找到的模块flask paginate: 我可以返回结果,我的分页开始时有正确的页数,但目前每页显示69个结果。文档显示per_page=,但这只影响正确的起始页码。我正在为我的数据库使用SQL炼金术 @search.route('/search') def search(): page, per_page, offset, inner_window = get_page_items() links = Item.query.all() total = I

Im使用此处找到的模块flask paginate:

我可以返回结果,我的分页开始时有正确的页数,但目前每页显示69个结果。文档显示per_page=,但这只影响正确的起始页码。我正在为我的数据库使用SQL炼金术

@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

                      )

如果您打印出
页面
,您可能会看到它总是返回
1
,因为您试图访问
请求
的范围之外,搜索路由函数和
.get()
总是返回
1

试试这样的

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

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

        ...
如果要继续使用单独的函数,则需要将
请求
对象传递给它,以便访问值


希望这有帮助

如果您打印出
页面
,您可能会看到它总是返回
1
,因为您试图访问
请求
的范围之外,搜索路由函数和
.get()
总是返回
1

试试这样的

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

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

        ...
如果要继续使用单独的函数,则需要将
请求
对象传递给它,以便访问值


希望这有帮助

我可以通过将DB查询的
Flask Paginate
切换到仅仅使用SQLALchemy via来解决这个问题

我将此更改为每页返回所需的结果

links = Item.query.paginate(page, 10, True)

更多信息在和上。

我可以通过将DB查询的
Flask Paginate
切换为仅使用SQLALchemy via来解决这个问题

我将此更改为每页返回所需的结果

links = Item.query.paginate(page, 10, True)

更多信息在和上。

我看到您选择使用炼金术,但希望这个答案能帮助其他人:

您几乎做到了—您正确地捕获了页面、每页和偏移量(实际上有一个用于此的值,您可以使用flask\u paginate import get\u page\u args)中的
导入该值),但您还需要在查询中使用每页和偏移量。在你的例子中:

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)

我知道你选择了使用炼金术,但希望这个答案能帮助其他人:

您几乎做到了—您正确地捕获了页面、每页和偏移量(实际上有一个用于此的值,您可以使用flask\u paginate import get\u page\u args
)中的
导入该值),但您还需要在查询中使用每页和偏移量。在你的例子中:

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)

仍然每页69个:(如果您知道它可以工作,我会从文档中显示的基本实现和开始提取功能开始。您可以编辑以包括视图和数据库设置吗?仍然每页69个:(我将从文档中显示的基本实现和开始提取功能开始,如果您想知道它正在工作的话。您可以编辑以包括视图和数据库设置吗?