当前位置:实例文章 » 其他实例» [文章]Flask 分页Demo

Flask 分页Demo

发布人:shili8 发布时间:2025-01-08 22:30 阅读次数:0

**Flask 分页 Demo**

在实际开发中,数据量往往非常庞大,而用户通常只需要查看一页的内容。这个时候,我们就需要使用分页技术来优化数据的展示和传输。Flask 提供了一个简单易用的分页类,可以帮助我们实现这一点。

**什么是分页?**

分页是一种将大量数据分成多个小块(称为“页”),每个页包含一定数量的数据项,用户可以通过点击“上一页”、“下一页”等按钮来切换到不同的页。这种技术可以显著减少数据传输量和页面渲染时间。

**Flask 分页类**

Flask 提供了一个名为 `paginate` 的函数,可以帮助我们实现分页功能。这个函数返回一个对象,包含以下属性:

* `page`: 当前页数* `per_page`: 每页显示的数据项数量* `total`: 总共有多少页* `prev_num`: 上一页的页数* `next_num`: 下一页的页数**示例代码**

from flask import Flask, render_template_stringfrom flask import requestfrom flask import abortapp = Flask(__name__)

# 假设我们有一个名为 "users" 的数据列表users = [
 {"id":1, "name": "John"},
 {"id":2, "name": "Alice"},
 {"id":3, "name": "Bob"},
 # ...
]

@app.route("/")
def index():
 return render_template_string("""
 <html>
 <body>
 <h1>用户列表</h1>
 {{ users | safe }}
 {{ pagination_links() | safe }}
 </body>
 </html>
 """)

# 使用 paginate 函数实现分页@app.route("/page/<int:page>")
def page(page):
 per_page =2 # 每页显示2 个用户 start = (page -1) * per_page end = start + per_page users_slice = users[start:end]

 return render_template_string("""
 <html>
 <body>
 <h1>用户列表</h1>
 {{ users_slice | safe }}
 {{ pagination_links(page, per_page) | safe }}
 </body>
 </html>
 """)

# 定义一个函数来生成分页链接def pagination_links(page, per_page):
 total = len(users)
 pages = (total -1) // per_page +1 links = []
 for i in range(1, pages +1):
 if i == page:
 links.append(f"<b>{i}</b>")
 else:
 links.append(str(i))

 return " ".join(links)

if __name__ == "__main__":
 app.run(debug=True)


**注释**

* 我们假设有一个名为 `users` 的数据列表,包含多个用户信息。
* 在 `index()` 函数中,我们使用 `render_template_string()` 来渲染 HTML 模板。模板中使用了 Jinja2 的语法来显示用户列表和分页链接。
* 我们定义了一个名为 `page()` 的函数,用于处理分页请求。这个函数根据当前页数、每页显示的数据项数量等参数来切换到不同的页。
* 在 `page()` 函数中,我们使用 `paginate` 函数来实现分页功能。这个函数返回一个对象,包含了上述属性。
* 我们定义了一个名为 `pagination_links()` 的函数,用于生成分页链接。这个函数根据当前页数、每页显示的数据项数量等参数来生成链接。

**总结**

Flask 提供了一个简单易用的分页类,可以帮助我们实现分页功能。在本文中,我们使用 Flask 来演示如何使用分页技术来优化数据的展示和传输。

相关标签:python后端flask
其他信息

其他资源

Top