Skip to main content

FastAPI-Amis-Admin is a high-performance, efficient and easily extensible FastAPI admin framework. Inspired by Django-admin, and has as many powerful functions as Django-admin.

Project description

简体中文 | English

Introduction

FastAPI-Amis-Admin

fastapi-amis-admin is a high-performance, efficient and easily extensible FastAPI admin framework.
Inspired by Django-admin, and has as many powerful functions as Django-admin.

Pytest Package version Downloads Chat on Gitter

source code · online demo · documentation · can't open the document?


fastapi-amis-admin is a high-performance and efficient framework based on fastapi & amis with Python 3.7+, and based on standard Python type hints. The original intention of the development is to improve the application ecology and to quickly generate a visual dashboard for the web application . According to the Apache2.0 protocol, it is free and open source . But in order to better operate and maintain this project in the long run, I very much hope to get everyone's sponsorship and support.

Features

  • High performance: Based on FastAPI. Enjoy all the benefits.
  • High efficiency: Perfect code type hints. Higher code reusability.
  • Support asynchronous and synchronous hybrid writing: ORM is based onSQLModel & Sqlalchemy. Freely customize database type. Support synchronous and asynchronous mode. Strong scalability.
  • Front-end separation: The front-end is rendered by Amis, the back-end interface is automatically generated by fastapi-amis-admin. The interface is reusable.
  • Strong scalability: The background page supports Amis pages and ordinary html pages. Easily customize the interface freely.
  • Automatic api documentation: Automatically generate Interface documentation by FastAPI. Easily debug and share interfaces.

Dependencies

Composition

fastapi-amis-admin consists of three core modules, of which, amis, fastapi-sqlmodel-crud can be used as separate modules, amis_admin is developed by the former.

  • amis: Based on the pydantic data model building library of baidu amis. To generate/parse data rapidly.
  • fastapi-sqlmodel-crud: Based on FastAPI &SQLModel. To quickly build Create, Read, Update, Delete common API interface .
  • admin: Inspired by Django-Admin. Combine amis with fastapi-sqlmodel-crud. To quickly build Web Admin dashboard .

Installation

pip install fastapi_amis_admin

Simple Example

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)

ModelAdmin Example

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

# create FastAPI application
app = FastAPI()

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


# Create an SQLModel, see document for details: 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')


# register ModelAdmin
@site.register_admin
class CategoryAdmin(admin.ModelAdmin):
    page_schema = 'Category'
    # set model
    model = Category


# mount AdminSite instance
site.mount_app(app)


# create initial database table
@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)

FormAdmin Example

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)

Working with Command

# Install command line extension
pip install fastapi_amis_admin[cli]

# View help
faa --help

# Initialize a `FastAPI-Amis-Admin` project
faa new project_name --init

# Initialize a `FastAPI-Amis-Admin` application
faa new app_name

# Fast running project
faa run

Preview

  • 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

Project

License

  • According to the Apache2.0 protocol, fastapi-amis-admin is free and open source. It can be used for commercial for free, but please clearly display copyright information about FastAPI-Amis-Admin on the display interface.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_amis_admin-0.4.3.tar.gz (466.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_amis_admin-0.4.3-py3-none-any.whl (94.5 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_amis_admin-0.4.3.tar.gz.

File metadata

  • Download URL: fastapi_amis_admin-0.4.3.tar.gz
  • Upload date:
  • Size: 466.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.28.2

File hashes

Hashes for fastapi_amis_admin-0.4.3.tar.gz
Algorithm Hash digest
SHA256 914b82abb653d1fda318b59451ed88d9740cce1d5915cc05c06b1d8fee98d9d1
MD5 4227e600d629ade783639e8223a6e0cc
BLAKE2b-256 2bd805f84c158cd644f21de52026745fa53f8e57403c16b9a4b508e3c66dfbfa

See more details on using hashes here.

File details

Details for the file fastapi_amis_admin-0.4.3-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_amis_admin-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0f244020bb79971253054908267c7f59e6fe3ecdfe73d99fecf9d0e99cc2be52
MD5 1e9874fd9dd7d821d2254e6c949d729d
BLAKE2b-256 7d1dc4a7a94dbb9772277b92a6ce36ce18d6c748e0863459cc7c022022d75acb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page