跳转至

fastapi_amis_admin

简介

本文主要写fastapi_amis_admin 实现configmap 的配置项管理,结合reloader 实现对deployment 环境变量的修改和重启。 官方文档链接:

http://docs.gh.amis.work/

实现方式

1、fastapi_amis_admin 初级使用

特点

  • 高性能:基于FastAPI。享受所有好处。
  • 高效率:完善的代码类型提示。更高的代码可重用性。
  • 支持异步和同步混合写入ORM 基于SQLModel& Sqlalchemy。自由定制数据库类型。支持同步和异步模式。可扩展性强。
  • 前端分离:前端由 渲染Amis,后端界面由 自动生成fastapi-amis-admin。接口是可重用的。
  • 扩展性强:后台页面支持Amis页面和普通html页面。轻松自由地自定义界面。
  • 自动api文档:自动生成接口文档FastAPI。轻松调试和共享接口。

依赖项

安装

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

# create FastAPI application
app = FastAPI()

# create AdminSite instance
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))

# mount AdminSite instance
site.mount_app(app)

if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, debug=True)

FormAdmin

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

# create FastAPI application
app = FastAPI()

# create AdminSite instance
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))


# register FormAdmin
@site.register_admin
class UserLoginFormAdmin(admin.FormAdmin):
    page_schema = 'UserLoginForm'
    # set form information, optional
    form = Form(title='This is a test login form', submitText='login')

    # create form schema
    class schema(BaseModel):
        username: str = Field(..., title='username', min_length=3, max_length=30)
        password: str = Field(..., title='password')

    # handle form submission data
    async def handle(self, request: Request, data: BaseModel, **kwargs) -> BaseApiOut[Any]:
        if data.username == 'amisadmin' and data.password == 'amisadmin':
            return BaseApiOut(msg='Login successfully!', data={'token': 'xxxxxx'})
        return BaseApiOut(status=-1, msg='Incorrect username or password!')


# mount AdminSite instance
site.mount_app(app)

if __name__ == '__main__':
    import uvicorn

    uvicorn.run(app, debug=True)

相关项目