fastapi admin,即开即用的后台框架
fastapi-amis-admin 是一个基于FastAPI web框架以及Amis前端框架即开即用的后台框架,类似于Django-Admin,它可以为FastAPI web应用程序快速生成一个可视化管理后台,配合其fastapi-user-auth套件使用时可以快速实现后台用户的认证与授权。
1、安装
pip install fastapi_amis_admin # 核心程序
pip install fastapi-amis-admin-cli # cli脚手架
pip install fastapi-user-auth # 用户RBAC认证与授权库
pip install fastapi-scheduler # 基于FastAPI和APScheduler的定时任务管理项目
2、Hello World
main.py
from fastapi import FastAPI
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.amis.components import PageSchema
from fastapi_amis_admin.admin import admin
from fastapi_amis_admin.amis.components import Page
# 创建AdminSite实例
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///./blog.db'))
# 创建Hello World页面
@site.register_admin
class HelloWorldPageAdmin(admin.PageAdmin):
page_schema = 'Hello World Page'
page = Page(title='标题', body='Hello World!')
# 将AdminSite实例挂载到app
app = FastAPI()
site.mount_app(app)
这时访问 http://127.0.0.1:8000/admin 就能看到我们新增的Hello World页面
3、CLI脚手架
fastapi-amis-admin-cli 是与fastapi-amis-admin相配套的用于快速构建FastAPI-Amis-Admin
项目的拓展库。下面是它的基本用法:
# 查看帮助
faa --help
# 初始化一个`FastAPI-Amis-Admin`项目
faa new project_name --init
# 初始化一个`FastAPI-Amis-Admin`应用
faa new app_name
# 快速运行项目
faa run
4、基本项目结构说明
基本程序结构
在Hello World例子中,我们大体可以看出在FastAPI-Amis-Admin项目中,一个FastAPI APP可以挂载多个AdminSite,而一个AdminSite可以由多个PageAdmin页面构成,其逻辑结构如下:
推荐的目录结构
在实际项目开发中,涉及的数据模型及管理页面数量一般都比较多,fastapi-amis-admin
建议项目采用类似django项目的目录结构。
我们可以使用 CLI脚手架
快速生成初始化项目文件,
faa new project_name --init
也可以手动创建:
├─backend
│ │ .env
│ │ alembic.ini
│ │ amisadmin.db
│ │ main.py
│ │ requirements.txt
│ │
│ ├─apps
│ │ │ __init__.py
│ │ │
│ │ ├─blog
│ │ │ │ admin.py
│ │ │ │ apis.py
│ │ │ │ views.py
│ │ │ │ models.py
│ │ │ │ schemas.py
│ │ │ │ jobs.py
│ │ │ │ settings.py
│ │ │ │ __init__.py
│ │ │ │
│ │ │ ├─templates
│ │ │ ├─static
│ │ │
│ │ │
│ │ ├─demo
│ │ │ admin.py
│ │ │ __init__.py
│ │ │
│ │ ├─templates
│ │ │ element.html
│ │ │ simple.html
│ │
│ ├─core
│ │ │ adminsite.py
│ │ │ settings.py
│ │ │ __init__.py