Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶分页在一页上显示所有结果_Python_Mysql_Sql_Flask_Pagination - Fatal编程技术网

Python 烧瓶分页在一页上显示所有结果

Python 烧瓶分页在一页上显示所有结果,python,mysql,sql,flask,pagination,Python,Mysql,Sql,Flask,Pagination,我正在尝试为产品页面设置分页,如下所示 from flask_paginate import Pagination, get_page_parameter ... page = request.args.get(get_page_parameter(), type=int, default=1) per_page = 4 offset = (page) * 10 search = False q = request.args.get('q') if q: search = Tru

我正在尝试为产品页面设置分页,如下所示

from flask_paginate import Pagination, get_page_parameter

...

page = request.args.get(get_page_parameter(), type=int, default=1)

per_page = 4
offset = (page) * 10

search = False
q = request.args.get('q')
if q:
    search = True


pagination = Pagination(page=page, per_page=per_page, offset=offset, total=len(products), 
search=search, record_name='products')

return render_template('products.html', form=form, products=products, 
subcategories=subcategories, pagination=pagination)
而“产品”是从代码中的前一个请求获取的

cur.execute("SELECT * FROM products")
products = cur.fetchall()
然而,在我的产品页面上,我得到了数据库20中当前的所有产品,而我可以看到{{pagination.info}显示了总共20个产品中的1-4个

另外{{pagination.links}}工作正常,因为它显示了功能性的分页链接,但所有产品仍然在页面上可见。你有什么建议可以解决这个问题吗


谢谢,我找到了解决这个问题的办法。也许不是最好的,如果你知道更好的方法,请告诉我。目前,我已通过以下方式解决了这一问题:

# Creating a cursor
cur = conn.cursor()

# Setting page, limit and offset variables
per_page = 4
page = request.args.get(get_page_parameter(), type=int, default=1)
offset = (page - 1) * per_page

# Executing a query to get the total number of products
cur.execute("SELECT * FROM products")
total = cur.fetchall()

# Executing a query with LIMIT and OFFSET provided by the variables above
cur.execute("SELECT * FROM products ORDER BY added_on DESC LIMIT %s OFFSET %s", (per_page, offset))
products = cur.fetchall()

# Closing cursor
cur.close()

...

# Setting up the pagination variable, where you are using len(total) to set the total number of 
# items available
pagination = Pagination(page=page, per_page=per_page, offset=offset, total=len(total), 
record_name='products')

# Render template, where you pass "products" variable
# for the prepared query with LIMIT and OFFSET, and passing "pagination" variable as well.
return render_template('products.html', form=form, products=products, pagination=pagination)

不按顺序分页是没有意义的。谢谢你的提示。一旦我找到解决办法,我会记住这一点。