This release is a pre-release and may not be stable for production use.
项目介绍
FastAPI-Amis-Admin
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, 可享受
FastAPI的全部优势. -
效率更快:完善的编码类型提示, 代码可重用性更高.
-
支持异步和同步混合编写:
ORM基于SQLModel+Sqlalchemy, 可自由定制数据库类型, 支持同步及异步模式, 可拓展性强. -
前后端分离: 前端由
Amis渲染, 后端接口由fastapi-amis-admin自动生成, 接口可重复利用. -
可拓展性强: 后台页面支持
Amis页面及普通html页面,开发者可以很方便的自由定制界面. -
自动生成API文档: 由
FastAPI自动生成接口文档,方便开发者调试,以及接口分享.
核心依赖
- FastAPI 负责 web 部分
- SQLModel 负责ORM模型映射(
完美结合SQLAlchemy+Pydantic, 拥有
SQLAlchemy和Pydantic的所有功能) - Amis 负责Admin后台页面展示
项目组成
fastapi-amis-admin由三部分核心模块组成,其中amis, fastapi-sqlmodel-crud 可作为独立模块单独使用,amis_admin基于前者共同构建.
amis: 基于baidu amis的pydantic数据模型构建库,用于快速生成/解析amisjson数据.fastapi-sqlmodel-crud: 基于FastAPI+SQLModel, 用于快速构建Create,Read,Update,Delete通用API接口.admin: 启发自Django-Admin, 结合amis+fastapi-sqlmodel-crud, 用于快速构建Web Admin管理后台.
安装
pip install fastapi_amis_admin
简单示例
from fastapi import FastAPI
from fastapi_amis_admin.admin.settings import Settings
from fastapi_amis_admin.admin.site import AdminSite
# 创建FastAPI应用
app = FastAPI()
# 创建AdminSite实例
site = AdminSite(settings = Settings(database_url_async = 'sqlite+aiosqlite:///amisadmin.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.admin.settings import Settings
from fastapi_amis_admin.admin.site import AdminSite
from fastapi_amis_admin.admin import admin
from fastapi_amis_admin.models.fields import Field
# 创建FastAPI应用
app = FastAPI()
# 创建AdminSite实例
site = AdminSite(settings = Settings(database_url_async = 'sqlite+aiosqlite:///amisadmin.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.db.async_run_sync(SQLModel.metadata.create_all, is_session = False)
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.admin import admin
from fastapi_amis_admin.admin.settings import Settings
from fastapi_amis_admin.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:///amisadmin.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)
使用命令行
# 安装命令行拓展
pip install fastapi_amis_admin[cli]
# 查看帮助
faa --help
# 初始化一个`FastAPI-Amis-Admin`项目
faa new project_name --init
# 初始化一个`FastAPI-Amis-Admin`应用
faa new app_name
# 快速运行项目
faa run
界面预览
- Open
http://127.0.0.1:8000/admin/in your browser:
- Open
http://127.0.0.1:8000/admin/docsin your browser:
相关项目
FastAPI-User-Auth: 一个简单而强大的FastAPI用户RBAC认证与授权库.FastAPI-Scheduler: 一个基于APScheduler的简单定时任务管理FastAPI拓展库.FastAPI-Amis-Admin-Demo: 一个FastAPI-Amis-Admin应用程序示例.FastAPI-User-Auth-Demo: 一个FastAPI-User-Auth应用程序示例.
许可协议
fastapi-amis-admin基于Apache2.0开源免费使用,可以免费用于商业用途,但请在展示界面中明确显示关于FastAPI-Amis-Admin的版权信息.
鸣谢
感谢以下开发者对 FastAPI-Amis-Admin 作出的贡献:
Metadata
Release files for fastapi_amis_admin 0.2.4a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fastapi_amis_admin-0.2.4a1.tar.gz | 71.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_amis_admin-0.2.4a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 155.1 kB
Release files / fastapi_amis_admin-0.2.4a1.tar.gz
| Download URL | fastapi_amis_admin-0.2.4a1.tar.gz |
|---|---|
| Size | 71.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8ea39220ac2770fb3cf3ff25a9ffa8b69b5484e92ea5cbb918a089421b9b2359
|
|
BLAKE2b-256 checksum How to use checksums |
828e875f4aef8655e380608a9eaaff4eac7b639a9c815e3ee050772be6848da7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.1.4 CPython/3.8.5
|
Release files / fastapi_amis_admin-0.2.4a1-py3-none-any.whl
| Download URL | fastapi_amis_admin-0.2.4a1-py3-none-any.whl |
|---|---|
| Size | 83.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e98d0e4d846cd468cd8b4a2b00ebad9cd1092bdaaaa02e1be3f61a037cfe283
|
|
BLAKE2b-256 checksum How to use checksums |
0fbf3ea47964826290b6c4c4383d9c4880ad7afd1d4f1daf8f58fd8ab8f5ad32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.1.4 CPython/3.8.5
|
Security for fastapi_amis_admin 0.2.4a1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.