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

flask_admin.contrib.sqla的常用功能介绍

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

Flask-Admin是一个为Flask应用程序生成管理界面的扩展包。其中的flask_admin.contrib.sqla模块专门用于与SQLAlchemy集成,提供了一些常用的功能以简化数据库管理。

下面是flask_admin.contrib.sqla模块中一些常用功能的介绍以及使用示例:

1. ModelView:用于显示和管理数据库模型的视图类。可以通过继承ModelView类来自定义视图。

from flask_admin.contrib.sqla import ModelView

# 自定义一个User模型的视图类
class UserView(ModelView):
    column_list = ['id', 'username', 'email']  # 指定要显示的列

    # 过滤属性,只显示username为admin的用户
    def get_query(self):
        return self.session.query(self.model).filter_by(username='admin')

    # 搜索属性,只搜索username和email字段
    def get_search_results(self, query, search_terms):
        return query.filter(db.or_(
            self.model.username.like(search_terms),
            self.model.email.like(search_terms)
        ))

# 创建User模型的视图
admin.add_view(UserView(User, db.session))

2. ModelView中的列和过滤器配置:可以指定在视图中显示的列以及过滤器的配置。

from flask_admin.contrib.sqla import ModelView

# 自定义一个User模型的视图类
class UserView(ModelView):
    # 指定要显示的列和过滤器
    column_list = ['id', 'username', 'email']
    column_filters = ['username', 'email']

# 创建User模型的视图
admin.add_view(UserView(User, db.session))

3. ModelView中的编辑表单和创建表单配置:可以自定义编辑和创建表单的字段和布局。

from wtforms import TextAreaField
from flask_admin.contrib.sqla import ModelView

# 自定义一个Post模型的视图类
class PostView(ModelView):
    # 指定要显示的列
    column_list = ['id', 'title', 'content']

    # 编辑表单字段和布局
    form_columns = ('title', 'content', 'author')
    form_overrides = dict(content=TextAreaField)

    # 创建表单字段和布局
    create_form_columns = ('title', 'content', 'author')
    create_form_overrides = dict(content=TextAreaField)

# 创建Post模型的视图
admin.add_view(PostView(Post, db.session))

4. ModelView中的验证器配置:可以自定义验证器,对输入的数据进行验证。

from wtforms import validators
from flask_admin.contrib.sqla import ModelView

# 自定义一个User模型的视图类
class UserView(ModelView):
    # 自定义验证器,验证username字段不能包含特殊字符
    form_args = {
        'username': {'validators': [validators.Regexp(r'^[\w]+$')]}
    }

# 创建User模型的视图
admin.add_view(UserView(User, db.session))

以上是flask_admin.contrib.sqla模块中一些常用的功能介绍和使用例子。通过使用这些功能,我们可以更方便地管理和操作数据库模型。使用Flask-Admin可以快速搭建出一个强大且易用的后台管理界面。