Skip to content

管理应用

管理应用的设计是为了针对更加复杂的场景,将各个功能模块相互隔离,但是又能方便的自由组合.

管理站点架构

管理应用是一个更大的管理类,而管理站点是一个更大的管理应用.管理应用可以由多个管理类或管理子应用组成,它们之前的关系类似下图:

graph TD AdminSite --> AdminAPP AdminSite --> AdminAPP1 AdminSite --> AdminAPP2 AdminSite --> Admin1 AdminSite --> Admin2 AdminAPP1 --> AdminAPP11 AdminAPP1 --> AdminAPP12 AdminAPP --> PageAdmin AdminAPP --> FormAdmin AdminAPP --> TemplateAdmin AdminAPP --> ModelAdmin AdminAPP --> PageSchemaAdmin AdminAPP --> RouterAdmin

管理应用的特性

  • 管理应用也是一个管理类,它可以被注册到其他管理应用或管理站点.

  • 管理应用可以注册其他管理类到本身的应用对象.

  • 每个管理应用都可以配置独立的数据库连接.

配置独立数据库引擎

from sqlalchemy.ext.asyncio import create_async_engine


@site.register_admin
class BlogApp(admin.AdminApp):
    page_schema = PageSchema(label='博客应用', icon='fa fa-wordpress')
    router_prefix = '/blog'
    # 配置自定义数据库引擎
    engine = create_async_engine('sqlite+aiosqlite:///amisadmin.db', future=True)

    def __init__(self, app: "AdminApp"):
        super().__init__(app)
        # 注册管理页面到此应用下;
        self.register_admin(ArticleAdmin, CategoryAdmin)

特殊用法

管理应用可以做为一个迷你版的管理站点,用来给管理类分组.

@site.register_admin
class DocsAdminGroup(AdminApp):
    # 展示模式,支持9种模式:'line,card,radio,vertical,chrome,simple,strong,tiled,sidebar'
    # 展示效果参考: https://aisuda.bce.baidu.com/amis/zh-CN/components/tabs#%E5%B1%95%E7%A4%BA%E6%A8%A1%E5%BC%8F
    # 默认为:None,采用菜单分组形式展示.
    tabs_mode = amis.TabsModeEnum.vertical

    def __init__(self, app: "AdminApp"):
        super().__init__(app)
        self.register_admin(HomeAdmin, DocsAdmin, ReDocsAdmin)

更多用法

目前关于AdminApp的教程与示例并不完善,后续可能会添加更多丰富的功能与教程. 如果你仅仅是想实现特定的功能,并不想深入研究,这部分可以先行跳过. 此外,你也可以通过阅读示例程序或源代码进一步了解.