美文网首页
flask sqlite 分页

flask sqlite 分页

作者: 追梦人在路上不断追寻 | 来源:发表于2023-05-04 22:09 被阅读0次

    在 Flask 中使用 SQLite 实现分页也是十分简单的,可以通过 Flask-SQLAlchemy 扩展来实现。以下是一个简单的 Flask-SQLAlchemy 分页示例:

    首先,安装 Flask 和 Flask-SQLAlchemy:

    pip install Flask Flask-SQLAlchemy
    

    然后,在 Flask 应用程序中创建一个 SQLAlchemy 实例:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
    db = SQLAlchemy(app)
    

    接下来,定义一个数据模型,这里以一个简单的用户模型为例:

    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        username = db.Column(db.String(80), unique=True, nullable=False)
        email = db.Column(db.String(120), unique=True, nullable=False)
    

    然后,定义一个视图函数来处理分页请求:

    from flask import render_template, request
    
    @app.route('/users')
    def users():
        page = request.args.get('page', 1, type=int)
        per_page = request.args.get('per_page', 10, type=int)
        users = User.query.paginate(page=page, per_page=per_page)
        return render_template('users.html', users=users)
    

    这个视图函数接受两个参数:page 和 per_page。page 表示当前页码,per_page 表示每页显示的记录数。默认情况下,page 和 per_page 分别为 1 和 10。

    最后,创建一个模板 users.html 来显示分页数据:

    {% extends "base.html" %}
    
    {% block content %}
      <table>
        <tr>
          <th>ID</th>
          <th>Username</th>
          <th>Email</th>
        </tr>
        {% for user in users.items %}
          <tr>
            <td>{{ user.id }}</td>
            <td>{{ user.username }}</td>
            <td>{{ user.email }}</td>
          </tr>
        {% endfor %}
      </table>
    
      {% if users.has_prev %}
        <a href="{{ url_for('users', page=users.prev_num, per_page=users.per_page) }}">Prev</a>
      {% endif %}
    
      {% if users.has_next %}
        <a href="{{ url_for('users', page=users.next_num, per_page=users.per_page) }}">Next</a>
      {% endif %}
    {% endblock %}
    

    这个模板使用了 Jinja2 模板引擎,通过 users.items 来遍历分页数据,使用 users.has_prev 和 users.has_next 来判断是否有上一页和下一页的链接。

    总的来说,Flask-SQLAlchemy 提供了非常方便的分页功能,可以轻松地实现分页功能。

    相关文章

      网友评论

          本文标题:flask sqlite 分页

          本文链接:https://www.haomeiwen.com/subject/vxlfsdtx.html