美文网首页
FastAPI-Amis-Admin: 一个拥有高性能,高效率,

FastAPI-Amis-Admin: 一个拥有高性能,高效率,

作者: atomi66 | 来源:发表于2022-02-10 20:25 被阅读0次

项目介绍

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

未来计划

  • bug修复,细节完善.
  • 完善用户教程文档.
  • 不断拓展与完善核心功能.
  • 增加用户认证与授权系统.

许可协议

  • fastapi-amis-admin基于Apache2.0开源免费使用,可以免费用于商业用途,但请在展示界面中明确显示关于FastAPI-Amis-Admin的版权信息.

相关文章

  • FastAPI-Amis-Admin: 一个拥有高性能,高效率,

    项目介绍 fastapi-amis-admin是一个拥有高性能,高效率,易拓展的fastapi管理后台框架. 启发...

  • Redis的模糊查询在生产环境出现严重的性能问题

    Redis是一个高性能高效率的key-value存储的nosql数据库,由于数据是存储在内存中,因此访问速度非常快...

  • 灿若繁星 华为新款MateBook X Pro皓月银绚丽登场

    现下全社会对于996的讨论热火朝天,怎样提高效率成为了工作人士的头等大事。一个高性能的生产力工具显得尤其重要,而华...

  • Kafka为什么拥有高性能?

    架构层面 1.利用Partition实现并行处理 Kafka中的每个Topic都包含一个或多个Partiti...

  • ProxySQL实现Mysql的读写分离

    一、前言 ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎,其特性主要由:读写分离、负载均衡、规...

  • vue初体验

    Vue.js 是什么? Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API; ...

  • 3基础知识

    3基础知识 Java是一个完整的平台,拥有庞大的库。简单、面向对象、网络技能、健壮、安全、可移植、易解释、高性能、...

  • Vue.js 概述与 MVVM 模式

    一、Vue.js 1. Vue.js 是什么 Vue.js 是一个轻巧、高性能、可组件化的 MVVM 库,拥有非常...

  • web前端面试

    1.vue是什么 Vue.js 是一个轻巧、高性能、可组件化的 MVVM 库,拥有非常容易上手的 API; Vue...

  • vue 基础知识

    Vue.js是什么? Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API Vue....

网友评论

      本文标题:FastAPI-Amis-Admin: 一个拥有高性能,高效率,

      本文链接:https://www.haomeiwen.com/subject/nkszkrtx.html