在 Flask 框架中,如果你想实现分页功能并渲染页码到你的 HTML 页面,你可以使用 Flask-SQLAlchemy 和 Flask-Paginate 这样的扩展来简化这个过程。下面用一个简单的例子来说明如何在 Flask 应用中实现分页和渲染页码。
首先,确保你已经安装了 Flask-SQLAlchemy 和 Flask-Paginate。如果还没有安装,可以使用 pip 来安装:
pip install flask-sqlalchemy flask-paginate
然后,在你的 Flask 应用中添加以下代码:
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from flask_paginate import Pagination, get_page_argsapp = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)class Item(db.Model):id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(80), unique=True, nullable=False)@app.route('/')
def index():page, per_page, offset = get_page_args(page_parameter='page', per_page_parameter='per_page')items = Item.query.order_by(Item.id).offset(offset).limit(per_page).all()total = Item.query.count()pagination = Pagination(page=page, per_page=per_page, total=total,css_framework='bootstrap4')return render_template('index.html', items=items, page=page,per_page=per_page, pagination=pagination)if __name__ == '__main__':app.run(debug=True)
在你的 HTML 模板 index.html
中,你可以使用 Bootstrap 或者你喜欢的 CSS 框架来渲染分页链接:
{% extends "base.html" %}{% block content %}<h1>Items</h1>{% for item in items %}<div>{{ item.name }}</div>{% endfor %}{% if pagination %}<nav aria-label="Page navigation"><ul class="pagination">{% for url in pagination.iter_pages() %}{% if url %}{% if url != pagination.page %}<li>