Flask中怎么實(shí)現(xiàn)分頁(yè)

小億
157
2024-05-10 18:13:00
欄目: 編程語言

在Flask中實(shí)現(xiàn)分頁(yè)功能可以通過在視圖函數(shù)中使用paginate方法來實(shí)現(xiàn)。首先需要安裝flask_sqlalchemy擴(kuò)展來實(shí)現(xiàn)數(shù)據(jù)庫(kù)查詢的分頁(yè)功能。

  1. 在Flask應(yīng)用中導(dǎo)入必要的模塊和類:
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import func
  1. 配置數(shù)據(jù)庫(kù)連接和創(chuàng)建Flask應(yīng)用實(shí)例:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
  1. 定義模型類:
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    content = db.Column(db.Text)
  1. 在視圖函數(shù)中使用paginate方法實(shí)現(xiàn)分頁(yè)功能:
@app.route('/')
def index():
    page = request.args.get('page', 1, type=int)
    per_page = 10
    posts = Post.query.order_by(Post.id.desc()).paginate(page, per_page, error_out=False)
    return render_template('index.html', posts=posts)
  1. 在模板文件中顯示分頁(yè)的內(nèi)容:
{% for post in posts.items %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.content }}</p>
{% endfor %}

{% if posts.has_prev %}
    <a href="{{ url_for('index', page=posts.prev_num) }}">Previous</a>
{% endif %}

{% if posts.has_next %}
    <a href="{{ url_for('index', page=posts.next_num) }}">Next</a>
{% endif %}

通過以上步驟,就可以實(shí)現(xiàn)在Flask應(yīng)用中的分頁(yè)功能。

0