欢迎访问宙启技术站
智能推送

flask_admin.contrib.sqla的使用方法详解

发布时间:2023-12-27 13:26:13

Flask-Admin是一个用于构建基于Flask框架的管理界面的库,它提供了一系列的管理视图和操作,可以方便地管理数据库模型。flask_admin.contrib.sqla是Flask-Admin的一个子模块,它提供了对SQLAlchemy数据库模型的支持。

## 安装

首先,你需要安装Flask-Admin和SQLAlchemy,可以使用下面的命令进行安装:

pip install flask-admin sqlalchemy

## 创建Flask应用

首先,我们需要创建一个基于Flask的应用。在Flask-Admin中,普通的Flask应用通过继承flask_admin.contrib.sqla.ModelView类来实现自动生成管理界面的功能。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

# 初始化Flask应用和数据库
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))

# 创建Admin对象
admin = Admin(app, name='Admin', template_mode='bootstrap3')

# 将模型注册到Admin对象
admin.add_view(ModelView(User, db.session))

if __name__ == '__main__':
    # 运行Flask应用
    app.run(debug=True)

上面的代码实现了一个最简单的Flask应用,在应用中创建了一个User模型,并使用ModelView将该模型注册到了Admin对象中。

## 运行程序

上述代码保存为app.py文件后,可以通过运行以下命令来启动程序:

python app.py

然后你可以通过访问http://localhost:5000/admin来访问Flask-Admin提供的管理界面。

## ModelView的使用方法

上述例子中,我们使用了ModelView类来生成User模型的管理界面。ModelView提供了一系列的选项来自定义管理界面的行为和外观。

### 选项

以下是ModelView类的一些常用选项:

- column_list:在列表视图中显示的列名列表。

- form_columns:在编辑视图和创建视图中显示的列名列表。

- can_createcan_editcan_delete:设置是否允许创建、编辑、删除操作。

- column_sortable_list:设置可排序的列名列表。

- column_searchable_list:设置可搜索的列名列表。

- column_filters:设置过滤器列的名字列表。

### 使用例子

以下是一些常见的使用例子:

#### 自定义显示列

class UserView(ModelView):
    column_list = ['id', 'name']

在上述例子中,我们自定义了UserView类,并设置了column_list['id', 'name'],这将会在列表视图中只显示'id'和'name'两列。

#### 设置只读字段

class UserView(ModelView):
    form_columns = ['name']
    column_editable_list = ['name']

在上述例子中,我们设置了form_columns['name'],这样在编辑视图和创建视图中只能编辑'name'字段。而通过设置column_editable_list['name'],我们实现了在列表视图中可以直接编辑'name'字段。

#### 添加过滤器

class UserView(ModelView):
    column_filters = ['name']
    column_searchable_list = ['name']

在上述例子中,我们设置了column_filters['name'],这样我们在列表视图中将会有一个可以选择'name'字段的过滤器。而通过设置column_searchable_list['name'],我们可以在列表视图中通过搜索框搜索'name'字段的内容。

以上只是ModelView类的一些常用选项和使用例子,你可以根据自己的需要更多的自定义。

这就是flask_admin.contrib.sqla的使用方法的详细说明和示例。通过ModelView类,我们可以很方便地生成和管理数据库模型的界面。使用这个模块,你可以快速地构建一个功能全面的数据库管理界面。