flask 查询语句分页
时间: 2023-08-14 17:06:52 浏览: 175
nodejs mysql 实现分页的方法
在 Flask 中进行查询语句的分页,你可以使用 SQLAlchemy 库来实现。下面是一个简单的示例:
```python
from flask import Flask, request, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'your_database_uri'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
@app.route('/')
def index():
page = request.args.get('page', 1, type=int)
per_page = 10
users = User.query.paginate(page, per_page, error_out=False)
return render_template('index.html', users=users)
if __name__ == '__main__':
app.run()
```
在上面的示例中,我们定义了一个 `User` 模型,并将查询结果进行分页展示。在路由 `/` 中,我们获取请求参数中的 `page` 参数,并使用 `User.query.paginate()` 方法进行分页查询。然后,我们将分页对象传递给模板进行展示。
在模板文件 `index.html` 中,你可以使用类似以下的代码来渲染分页结果:
```html
{% for user in users.items %}
<p>{{ user.name }}</p>
{% endfor %}
<div class="pagination">
{% if users.has_prev %}
<a href="{{ url_for('index', page=users.prev_num) }}">Previous</a>
{% endif %}
{% for page_num in users.iter_pages() %}
{% if page_num %}
{% if users.page == page_num %}
<strong>{{ page_num }}</strong>
{% else %}
<a href="{{ url_for('index', page=page_num) }}">{{ page_num }}</a>
{% endif %}
{% else %}
...
{% endif %}
{% endfor %}
{% if users.has_next %}
<a href="{{ url_for('index', page=users.next_num) }}">Next</a>
{% endif %}
</div>
```
这个模板中使用了 `users.items` 来迭代分页结果,`users.has_prev` 和 `users.has_next` 来判断是否有上一页和下一页,以及 `users.prev_num` 和 `users.next_num` 来获取上一页和下一页的页码。还使用了 `users.iter_pages()` 来迭代生成分页链接。
请注意,上面的示例假设你已经正确配置了数据库连接,并且拥有一个名为 `index.html` 的模板来展示分页结果。你可以根据自己的需求进行更改和扩展。
阅读全文