Flask 是一个轻量级的 Web 框架,由 Python 的大拿们精心打造,旨在让开发者能够更方便地构建 Web 应用。而 Flask CRUD 则是基于 Flask 的一个常用模式,用于实现数据增删改查(CRUD)操作,极大地提高了开发效率。
理解 Flask CRUD在 Flask 中,我们通常会用到四个组件来进行 CRUD 操作:Model、Controller、View 和 Database。其中,Model 对应于数据库中的表格,Controller 负责接收前端的请求并执行相应的操作,View 则负责展示数据给用户。
Model
模型是数据库中的表格,它定义了数据的结构。在 Flask 中,我们可以使用 SQLAlchemy ORM 来生成模型。例如,下面的代码定义了一个简单的用户模型:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
age = db.Column(db.Integer, nullable=False)
在这个例子中,User 是一个数据库中的表格,包含了 id、username、email 和 age 四列字段。
Controller
控制器负责接收前端发来的请求,并根据请求的类型执行相应的操作。在 Flask 中,我们可以使用 @app.route()
装饰器来定义路由。例如,下面的代码定义了一个用于添加用户的控制器:
from flask import Flask, request
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
@app.route('/add', methods=['POST'])
def add():
user = User(username='testuser', email='testuser@example.com', age=20)
db.session.add(user)
db.session.commit()
return 'User added successfully!'
在这个例子中,当用户发送一个 POST 请求到 /add
时,控制器会创建一个新的 User 对象,并将其添加到数据库中。
View
视图负责展示数据给用户。在 Flask 中,我们可以使用模板文件夹下的 HTML 文件来定义页面模板,并通过渲染引擎将数据呈现给用户。例如,下面的代码定义了一个简单的用户列表视图:
from flask import render_template
@app.route('/users')
def users():
users = User.query.all()
return render_template('users.html', users=users)
在这个例子中,当用户访问 /users
时,视机会返回一个名为 users.html
的页面模板,并将所有用户对象呈现给用户。
通过上面的介绍,我们可以看出 Flask CRUD 的基本用法。但是,如何利用 Flask CRUD 实现一些高级的功能,如关联查询、分页、排序等,就需要我们进一步探索 Flask 的特性。
例如,我们可以使用 Flask 的 關聯
方法来实现关联查询:
@app.route('/users/<int:user_id>')
def show(user_id):
user = User.query.get(user_id)
return render_template('user.html', user=user)
在这个例子中,当用户访问 /users/<int:user_id>
时,视机会返回一个名为 user.html
的页面模板,并将该用户的详细信息呈现给用户。
此外,我们还可以使用 Flask 的 分頁
模块来实现分页功能:
from flask_ paginate import Paginate
@app.route('/users')
def users():
paginator = Paginate(User.query.all(), per_page=10)
return render_template('users.html', users=paginator.items, pagination=paginator
共同学习,写下你的评论
评论加载中...
作者其他优质文章