Python-web 框架flask----paginate分页
时间: 2023-10-30 15:05:08 浏览: 295
Flask-Paginate是一个Flask扩展,它提供了一种简单的方法来实现分页功能。它基于SQLAlchemy,并且可以与任何SQLAlchemy支持的数据库一起使用。
首先,你需要安装Flask-Paginate扩展。可以通过以下命令来安装:
```
pip install Flask-Paginate
```
然后,你需要导入Flask-Paginate扩展并创建一个分页器。以下是一个简单的示例:
```python
from flask_paginate import Pagination, get_page_args
@app.route('/')
def index():
# 获取当前页码和每页显示的数量
page, per_page, offset = get_page_args(page_parameter='page', per_page_parameter='per_page')
# 从数据库中获取数据
data = get_data_from_database(offset=offset, per_page=per_page)
# 创建分页器
pagination = Pagination(page=page, per_page=per_page, total=count_total_items_in_database(), css_framework='bootstrap4')
# 渲染模板
return render_template('index.html', data=data, pagination=pagination)
```
在上面的示例中,我们首先使用`get_page_args`函数从请求参数中获取当前页码和每页显示的数量。然后,我们从数据库中获取数据,并使用`Pagination`类创建一个分页器对象。最后,我们将数据和分页器对象传递给模板进行渲染。
在模板中,你可以使用`prev_href`,`next_href`和`links`属性来生成分页器的HTML代码。以下是一个简单的示例:
```html
<div class="pagination">
<a href="{{ pagination.prev_href() }}">Previous</a>
{% for page in pagination.links %}
{% if page == '...' %}
<span class="ellipsis">...</span>
{% elif page == pagination.page %}
<span class="current">{{ page }}</span>
{% else %}
<a href="{{ page }}">{{ page }}</a>
{% endif %}
{% endfor %}
<a href="{{ pagination.next_href() }}">Next</a>
</div>
```
上面的代码会生成一个类似于以下HTML代码的分页器:
```html
<div class="pagination">
<a href="/?page=1&per_page=10">Previous</a>
<a href="/?page=1&per_page=10">1</a>
<a href="/?page=2&per_page=10">2</a>
<a href="/?page=3&per_page=10">3</a>
<a href="/?page=4&per_page=10">4</a>
<a href="/?page=5&per_page=10">5</a>
<span class="ellipsis">...</span>
<a href="/?page=10&per_page=10">10</a>
<a href="/?page=2&per_page=10">Next</a>
</div>
```
此外,你还可以使用`prev_disabled`和`next_disabled`属性来禁用“上一页”和“下一页”链接,如果当前页码是第一页或最后一页的话。
阅读全文