flask实现分页代码
时间: 2023-10-29 07:58:53 浏览: 44
以下是一个基本的 Flask 分页实现代码示例:
```python
from flask import Flask, request, render_template
app = Flask(__name__)
# 设置每页显示的记录数
PER_PAGE = 10
@app.route('/')
def index():
# 获取当前页码
page = request.args.get('page', default=1, type=int)
# 计算起始记录下标和结束记录下标
start = (page - 1) * PER_PAGE
end = start + PER_PAGE
# 模拟数据
data = list(range(1, 101))
# 获取当前页的记录
records = data[start:end]
# 计算总页数
total_pages = len(data) // PER_PAGE + (1 if len(data) % PER_PAGE != 0 else 0)
# 渲染模板
return render_template('index.html', records=records, page=page, total_pages=total_pages)
if __name__ == '__main__':
app.run()
```
在上述代码中,我们定义了每页显示的记录数为 10,通过 `request.args.get()` 方法获取当前页码,然后计算出当前页的记录和总页数,最后将这些数据传递给模板进行渲染。在模板中,我们可以使用 Bootstrap 分页控件来实现分页功能,示例代码如下:
```html
{% if total_pages > 1 %}
<nav aria-label="Page navigation">
<ul class="pagination">
{% if page > 1 %}
<li class="page-item">
<a class="page-link" href="?page={{ page - 1 }}" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
{% endif %}
{% for p in range(1, total_pages + 1) %}
<li class="page-item {% if p == page %}active{% endif %}">
<a class="page-link" href="?page={{ p }}">{{ p }}</a>
</li>
{% endfor %}
{% if page < total_pages %}
<li class="page-item">
<a class="page-link" href="?page={{ page + 1 }}" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
```
在上述代码中,我们使用了 Bootstrap 分页控件的样式,并根据当前页码和总页数来生成分页链接。需要注意的是,我们使用了 Flask 模板语言中的循环语句和条件语句来动态生成 HTML 代码。