当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

FastAPI-Amis-Admin

fastapi 管理后台框架
授权协议 Apache
开发语言 Python
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 马才
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

fastapi-amis-admin 是一个拥有高性能、高效率、易拓展的 fastapi 管理后台框架,启发自 Django-Admin,并且拥有不逊色于Django-Admin的强大功能。

fastapi-amis-admin 基于fastapi+amis开发的高性能并且高效率 web-admin 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。 

fastapi-amis-admin开发的初衷是为了完善fastapi应用生态, 为fastapi web应用程序快速生成一个可视化管理后台. fastapi-amis-admin遵循Apache2.0协议免费开源, 但是为了更好的长期运营与维护此项目, fastapi-amis-admin非常希望能够得到大家的赞助与支持.

关键特性

  • 性能极高:基于FastAPI, 可享受FastAPI的全部优势。

  • 效率更快:完善的编码类型提示, 代码可重用性更高.

  • 支持异步和同步混合编写: ORM基于SQLModel+Sqlalchemy, 可自由定制数据库类型, 支持同步及异步模式, 可拓展性强.

  • 前后端分离: 前端由Amis渲染, 后端接口由fastapi-amis-admin自动生成, 接口可重复利用.

  • 可拓展性强: 后台页面支持Amis页面及普通html页面,开发者可以很方便的自由定制界面.

  • 自动生成API文档: 由FastAPI自动生成接口文档,方便开发者调试,以及接口分享.

核心依赖

项目组成

fastapi-amis-admin由三部分核心模块组成,其中amis, fastapi-sqlmodel-crud 可作为独立模块单独使用,amis_admin基于前者共同构建.

  • amis: 基于baidu amispydantic数据模型构建库,用于快速生成/解析amis json 数据.
  • fastapi-sqlmodel-crud: 基于FastAPI+SQLModel, 用于快速构建Create,Read,Update,Delete通用API接口.
  • amis_admin: 启发自Django-Admin, 结合amis+fastapi-sqlmodel-crud, 用于快速构建Web Admin管理后台.

安装

pip install fastapi_amis_admin

简单示例

from fastapi import FastAPI
from fastapi_amis_admin.amis_admin.settings import Settings
from fastapi_amis_admin.amis_admin.site import AdminSite

# 创建FastAPI应用
app = FastAPI()

# 创建AdminSite实例
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))

# 挂载后台管理系统
site.mount_app(app)

if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, debug=True)

模型管理示例

from fastapi import FastAPI
from sqlmodel import SQLModel
from fastapi_amis_admin.amis_admin.settings import Settings
from fastapi_amis_admin.amis_admin.site import AdminSite
from fastapi_amis_admin.amis_admin import admin
from fastapi_amis_admin.models.fields import Field

# 创建FastAPI应用
app = FastAPI()

# 创建AdminSite实例
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))


# 先创建一个SQLModel模型,详细请参考: https://sqlmodel.tiangolo.com/
class Category(SQLModel, table=True):
    id: int = Field(default=None, primary_key=True, nullable=False)
    name: str = Field(title='CategoryName')
    description: str = Field(default='', title='Description')


# 注册ModelAdmin
@site.register_admin
class CategoryAdmin(admin.ModelAdmin):
    page_schema = '分类管理'
    # 配置管理模型
    model = Category


# 挂载后台管理系统
site.mount_app(app)


# 创建初始化数据库表
@app.on_event("startup")
async def startup():
    await site.create_db_and_tables()


if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, debug=True)

表单管理示例

from typing import Any
from fastapi import FastAPI
from pydantic import BaseModel
from starlette.requests import Request
from fastapi_amis_admin.amis.components import Form
from fastapi_amis_admin.amis_admin import admin
from fastapi_amis_admin.amis_admin.settings import Settings
from fastapi_amis_admin.amis_admin.site import AdminSite
from fastapi_amis_admin.crud.schema import BaseApiOut
from fastapi_amis_admin.models.fields import Field

# 创建FastAPI应用
app = FastAPI()

# 创建AdminSite实例
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))


# 注册FormAdmin
@site.register_admin
class UserLoginFormAdmin(admin.FormAdmin):
    page_schema = 'UserLoginForm'
    # 配置表单信息, 可省略
    form = Form(title='这是一个测试登录表单', submitText='登录')

    # 创建表单数据模型
    class schema(BaseModel):
        username: str = Field(..., title='用户名', min_length=3, max_length=30)
        password: str = Field(..., title='密码')

    # 处理表单提交数据
    async def handle(self, request: Request, data: BaseModel, **kwargs) -> BaseApiOut[Any]:
        if data.username == 'amisadmin' and data.password == 'amisadmin':
            return BaseApiOut(msg='登录成功!', data={'token': 'xxxxxx'})
        return BaseApiOut(status=-1, msg='用户名或密码错误!')


# 挂载后台管理系统
site.mount_app(app)

if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, debug=True)

界面预览

  • Open http://127.0.0.1:8000/admin/ in your browser

ModelAdmin

  • Open http://127.0.0.1:8000/admin/docs in your browser

Docs

 

  • 快速开始 安装 pip install fastapi_amis_admin 简单示例 1.创建文件**adminsite.py**: from fastapi_amis_admin.amis_admin.settings import Settings from fastapi_amis_admin.amis_admin.site import AdminSite from fastapi_a

  • 涉及下边4处代码 1、模板中添加 <link rel="stylesheet" href="{{ url_for('static',path='/css/signin.css') }}"/> <script type="text/javascript" src="{{ url_for('static',path='/js/test.js') }}"> 2、py文件添加 app.mount("

  • 17.FastAPI 表单数据 如果接收的数据不是JSON格式,而是表单字段,则需要使用Form。在FastAPI中,要使用Form,需要事先安装python-multipart,执行如下命令: pip install python-multipart Form参数与Path、Query、Body一样,从fastapi导入。其使用方法相同。 17.1使用Form参数 from fastapi im

  • docker-compose部署fastapi+nginx+mysql 概述 整个部署逻辑和django的部署比较相似,不过还是有一些不同的地方。 首先,使用的python镜像不是官方的,而是fastapi作者准备的一个镜像,这个镜像可以自动读取服务器的cpu数量确认启动的workers数,这个镜像仅适合但服务器的docker部署,不适合k8s使用。 整个项目结构如下: . ├── docker-

  • 入门 创建项目 创建一个文件夹fast-tmp-study mkdir fast-tmp-study 创建虚拟环境(以poetry为例) poetry init poetry install 修改软件源(一般情况下不用修改,现在国内用默认源挺快的), 修改pyproject.toml文件,在后面加上: [[tool.poetry.source]] url = "https://mirrors.

 相关资料
  • 概要设计 1、创建、发送、停止同步任务; 2、创建、抓取同步工作节点; 3、抓取、整合节点统计数据与实时数据并做页面展示; 4、抓取、整合任务统计数据与实施数据并做页面展示; 5、抓取告警日志并做页面展示; 6、收集、整合数据推送到中间件。 名词须知 数据源:数据存储位置,现启用kafka、jdbc、canal三种类型; 数据表组:

  • moa2-frontend 前后端分离 shop-server 3000 shop-admin 3010 nginx 8000 即3010 /api 即3000 worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; p

  • Flarum 管理面板是一个用户友好的论坛管理界面。 它只对「管理」组 的用户开放。 要进入管理界面,只需点击屏幕右上方您的 用户名, 选择 后台管理 即可。

  • 应用管理后台 PDF版下载 可以为第三方应用设置一个管理后台,对第三方应用做一些必要的管理设置,可以按照如下步骤操作: 设置应用管理后台地址 第三方服务商在应用详情为第三方应用设置“管理后台主页” 企业管理员进入应用后台 管理员点击应用中的“进入管理后台”跳转到第三方服务商的“管理后台主页”链接,点击跳转到管理后台之后,服务商的管理后台可以得到授权码和过期时间,用于获取访问的管理员身份: 获取访问

  • 您在CC直播平台注册直播管理账号,使用该账号在http://admin.bokecc.com 登录后可以创建管理监控直播间,为直播间主持人、讲师、助教、观众等角色设置密码,查看直播统计信息。 管理后台登录 1.打开CC视频管理后台页面http://admin.bokecc.com/,输入CC后台账号及密码进行登录。 2.在管理后台首页点击 “云直播” 菜单 3.进入直播管理页面 在直播管理页面可查

  • amis 是一个前端低代码框架,通过 JSON 配置就能生成各种后台页面,极大减少开发成本,甚至可以不需要了解前端。 目前在百度广泛用于内部平台的前端开发,已有 100+ 部门使用,创建了 3w+ 页面。 文档 https://baidu.gitee.io/amis/docs/index 相关工具及平台 通过 amis 搭建自己的后台系统:https://github.com/fex-team/a