使用flask_admin.contrib.sqla实现数据表的搜索功能
Flask-Admin 是一个基于 Flask 和 Flask-SQLAlchemy 的库,用于快速创建管理界面。它可以帮助你方便地管理和操作数据库中的数据表。其中,flask_admin.contrib.sqla 模块扩展了 Flask-Admin,提供了与 SQLAlchemy 一起使用的功能。
在 Flask-Admin 中,可以通过添加 BaseModelView 或 ModelView 类来实现对数据表的增删改查等操作。对于搜索功能,ModelView 类提供了 column_searchable_list 属性,我们可以在这里定义需要进行搜索的列。
下面是一个简单的示例,演示了如何使用 Flask-Admin 和 flask_admin.contrib.sqla 模块实现数据表的搜索功能:
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
# 定义一个数据模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
email = db.Column(db.String(50))
def __repr__(self):
return f"<User {self.name}>"
# 创建管理员对象
admin = Admin(app, name="MyAdmin", template_mode="bootstrap3")
# 创建 User 视图
class UserView(ModelView):
column_searchable_list = ['name', 'email'] # 指定需要搜索的列
# 注册 User 数据模型和视图
admin.add_view(UserView(User, db.session))
@app.route('/')
def index():
return "Hello Flask-Admin!"
if __name__ == "__main__":
app.run()
在上面的例子中,我们首先创建了一个 User 数据模型,包含了三个字段:id、name 和 email。然后创建了一个 UserView 类,继承了 ModelView,并设置了 column_searchable_list 属性,指定了需要进行搜索的列。
接下来,注册数据库和视图到 Flask-Admin 中,通过 admin.add_view(UserView(User, db.session)) 添加了 UserView 视图和 User 数据模型。
最后,创建一个简单的 Flask 应用,运行在 http://localhost:5000/ 上,并在应用中注册了 Flask-Admin。
现在,你可以通过访问 http://localhost:5000/admin 来查看和搜索 User 数据表了。在搜索框中输入关键字,可以根据姓名或邮箱字段进行搜索。
以上就是使用 Flask-Admin 和 flask_admin.contrib.sqla 实现数据表搜索功能的简单示例。你可以根据自己的需求修改示例中的代码,以适应你的应用场景。
