使用 Flask-Admin 和 SQLAlchemy,你可以轻松地创建一个管理界面来添加、删除和编辑数据库中的表记录。以下是一个完整的示例,展示了如何使用 Flask-Admin 和 SQLAlchemy 创建一个简单的管理界面。
首先,确保你已经安装了 Flask、Flask-Admin 和 Flask-SQLAlchemy。你可以使用 pip 来安装这些依赖:
pip install Flask Flask-Admin Flask-SQLAlchemy
创建一个 Flask 应用并配置 SQLAlchemy 数据库。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
app.config['SECRET_KEY'] = 'mysecretkey'
db = SQLAlchemy(app)
admin = Admin(app, name='MyApp', template_mode='bootstrap3')
定义一个 SQLAlchemy 模型。例如,一个简单的用户模型:
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)
def __repr__(self):
return f'<User {self.username}>'
在第一次运行时,创建数据库和表:
with app.app_context():
db.create_all()
使用 Flask-Admin 的 ModelView
来创建一个管理界面视图,并将其添加到 Flask-Admin 实例中。
admin.add_view(ModelView(User, db.session))
将所有代码整合在一起,得到一个完整的示例:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
app.config['SECRET_KEY'] = 'mysecretkey'
db = SQLAlchemy(app)
admin = Admin(app, name='MyApp', template_mode='bootstrap3')
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)
def __repr__(self):
return f'<User {self.username}>'
admin.add_view(ModelView(User, db.session))
if __name__ == '__main__':
with app.app_context():
db.create_all()
app.run(debug=True)
保存上述代码到一个文件(例如 app.py
),然后运行:
python app.py
打开浏览器并访问 http://127.0.0.1:5000/admin
,你将看到一个管理界面,可以添加、删除和编辑用户记录。
你可以自定义 ModelView
以满足特定需求。例如,限制某些字段的编辑,或者添加自定义的验证逻辑:
class UserAdmin(ModelView):
column_list = ('id', 'username', 'email')
form_columns = ('username', 'email')
column_searchable_list = ('username', 'email')
column_filters = ('username', 'email')
admin.add_view(UserAdmin(User, db.session))
通过这种方式,你可以使用 Flask-Admin 和 SQLAlchemy 创建一个功能强大的管理界面,轻松管理数据库中的表记录。
领取专属 10元无门槛券
手把手带您无忧上云