fastapi-amis-admin 是一个拥有高性能,高效率,易拓展的 fastapi 管理后台框架.
启发自 Django-Admin,并且拥有不逊色于 Django-Admin 的强大功能.
fastapi-amis-admin
是一个基于fastapi
+amis
开发的高性能并且高效率 web-admin
框架,使用 Python 3.7+ 并基于标准的 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
自动生成接口文档,方便开发者调试,以及接口分享.
SQLAlchemy
和Pydantic
的所有功能)fastapi-amis-admin
由三部分核心模块组成,其中amis
, fastapi-sqlmodel-crud
可作为独立模块单独使用,amis_admin
基于前者共同构建.
amis
: 基于baidu amis
的pydantic
数据模型构建库,用于快速生成 /解析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)
http://127.0.0.1:8000/admin/
in your browser:http://127.0.0.1:8000/admin/docs
in your browser:fastapi-amis-admin
基于Apache2.0
开源免费使用,可以免费用于商业用途,但请在展示界面中明确显示关于 FastAPI-Amis-Admin 的版权信息.这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.