在 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_args
app = 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>