{"id":13460149,"url":"https://github.com/amisadmin/fastapi-amis-admin","last_synced_at":"2025-05-14T02:08:34.204Z","repository":{"id":40388371,"uuid":"448282033","full_name":"amisadmin/fastapi-amis-admin","owner":"amisadmin","description":"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.","archived":false,"fork":false,"pushed_at":"2025-03-19T12:49:41.000Z","size":2343,"stargazers_count":1241,"open_issues_count":62,"forks_count":177,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-05-08T02:02:57.030Z","etag":null,"topics":["amis","django-admin","fastapi","fastapi-admin","fastapi-amis-admin","sqlalchemy","sqlmodel","starlette"],"latest_commit_sha":null,"homepage":"http://docs.amis.work","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amisadmin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-15T13:16:34.000Z","updated_at":"2025-05-08T00:48:16.000Z","dependencies_parsed_at":"2023-02-01T19:46:40.300Z","dependency_job_id":"9ef7ab77-9e78-49a4-9de4-77d87609005f","html_url":"https://github.com/amisadmin/fastapi-amis-admin","commit_stats":{"total_commits":523,"total_committers":22,"mean_commits":"23.772727272727273","dds":0.09751434034416828,"last_synced_commit":"90fea56ce6ba91692e3225062061e2cff6eeedc4"},"previous_names":["amisadmin/fastapi_amis_admin"],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amisadmin%2Ffastapi-amis-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amisadmin%2Ffastapi-amis-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amisadmin%2Ffastapi-amis-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amisadmin%2Ffastapi-amis-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amisadmin","download_url":"https://codeload.github.com/amisadmin/fastapi-amis-admin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254053178,"owners_count":22006717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amis","django-admin","fastapi","fastapi-admin","fastapi-amis-admin","sqlalchemy","sqlmodel","starlette"],"created_at":"2024-07-31T10:00:36.395Z","updated_at":"2025-05-14T02:08:29.191Z","avatar_url":"https://github.com/amisadmin.png","language":"Python","readme":"[简体中文](https://github.com/amisadmin/fastapi_amis_admin/blob/master/README.zh.md)\n| [English](https://github.com/amisadmin/fastapi_amis_admin)\n\n# Introduction\n\n\u003ch2 align=\"center\"\u003e\n  FastAPI-Amis-Admin\n\u003c/h2\u003e\n\u003cp align=\"center\"\u003e\n    \u003cem\u003efastapi-amis-admin is a high-performance, efficient and easily extensible FastAPI admin framework.\u003c/em\u003e\u003cbr/\u003e\n    \u003cem\u003eInspired by Django-admin, and has as many powerful functions as Django-admin.\u003c/em\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/amisadmin/fastapi_amis_admin/actions/workflows/pytest.yml\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://github.com/amisadmin/fastapi_amis_admin/actions/workflows/pytest.yml/badge.svg\" alt=\"Pytest\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pypi.org/project/fastapi_amis_admin\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://badgen.net/pypi/v/fastapi-amis-admin?color=blue\" alt=\"Package version\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://pepy.tech/project/fastapi-amis-admin\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://pepy.tech/badge/fastapi-amis-admin\" alt=\"Downloads\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://gitter.im/amisadmin/fastapi-amis-admin\"\u003e\n        \u003cimg src=\"https://badges.gitter.im/amisadmin/fastapi-amis-admin.svg\" alt=\"Chat on Gitter\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/amisadmin/fastapi_amis_admin\" target=\"_blank\"\u003esource code\u003c/a\u003e\n  ·\n  \u003ca href=\"http://demo.amis.work/admin\" target=\"_blank\"\u003eonline demo\u003c/a\u003e\n  ·\n  \u003ca href=\"http://docs.gh.amis.work\" target=\"_blank\"\u003edocumentation\u003c/a\u003e\n  ·\n  \u003ca href=\"http://docs.amis.work\" target=\"_blank\"\u003ecan't open the document?\u003c/a\u003e\n\u003c/p\u003e\n\n\n------\n\n`fastapi-amis-admin` is a high-performance and efficient framework based on `fastapi` \u0026 `amis` with `Python 3.7+`, and\nbased on standard Python type hints. The original intention of the development is to improve the application ecology and\nto quickly generate a visual dashboard for the web application . According to the `Apache2.0` protocol, it is free and\nopen source . But in order to better operate and maintain this project in the long run, I very much hope to get\neveryone's sponsorship and support.\n\n## Features\n\n- **High performance**: Based on [FastAPI](https://fastapi.tiangolo.com/). Enjoy all the benefits.\n- **High efficiency**: Perfect code type hints. Higher code reusability.\n- **Support asynchronous and synchronous hybrid writing**: `ORM`  is based on`SQLModel` \u0026 `Sqlalchemy`. Freely customize\n  database type. Support synchronous and asynchronous mode. Strong scalability.\n- **Front-end separation**: The front-end is rendered by `Amis`, the back-end interface is automatically generated\n  by `fastapi-amis-admin`. The interface is reusable.\n- **Strong scalability**: The background page supports `Amis` pages and ordinary `html` pages. Easily customize the\n  interface freely.\n- **Automatic api documentation**: Automatically generate Interface documentation by `FastAPI`. Easily debug and share\n  interfaces.\n\n## Dependencies\n\n- [FastAPI](https://fastapi.tiangolo.com/): Finish the web part.\n- [SQLModel](https://sqlmodel.tiangolo.com/): Finish `ORM` model mapping. Perfectly\n  combine  [SQLAlchemy](https://www.sqlalchemy.org/) with [Pydantic](https://pydantic-docs.helpmanual.io/), and have all\n  their features .\n- [Amis](https://baidu.github.io/amis/): Finish admin page presentation.\n\n## Composition\n\n`fastapi-amis-admin` consists of three core modules, of which, `amis`, `crud` can be used as separate\nmodules, `admin` is developed by the former.\n\n- `amis`: Based on the `pydantic` data model building library of `baidu amis`. To generate/parse data rapidly.\n- `crud`: Based on `FastAPI` \u0026`Sqlalchemy`. To quickly build Create, Read, Update, Delete common API\n  interface .\n- `admin`: Inspired by `Django-Admin`. Combine `amis` with `crud`. To quickly build Web Admin\n  dashboard .\n\n## Installation\n\n```bash\npip install fastapi_amis_admin\n```\n\n### Note\n\n- After version `fastapi-amis-admin\u003e=0.6.0`, `sqlmodel` is no longer a required dependency library. If you use `sqlmodel`\n  to create a model, you can install it with the following command.\n\n```bash\npip install fastapi_amis_admin[sqlmodel]\n```\n\n## Simple Example\n\n```python\nfrom fastapi import FastAPI\nfrom fastapi_amis_admin.admin.settings import Settings\nfrom fastapi_amis_admin.admin.site import AdminSite\n\n# create FastAPI application\napp = FastAPI()\n\n# create AdminSite instance\nsite = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))\n\n# mount AdminSite instance\nsite.mount_app(app)\n\nif __name__ == '__main__':\n    import uvicorn\n\n    uvicorn.run(app)\n```\n\n## ModelAdmin Example\n\n### Create Model\n\n- Support `SQLModel` model, `SQLAlchemy` model, `SQLAlchemy 2.0` model\n- Method 1: Create model through `SQLModel`.\n\n```python\nfrom typing import Optional\nfrom sqlmodel import SQLModel\nfrom fastapi_amis_admin.models.fields import Field\n\n\nclass Base(SQLModel):\n    pass\n\n\n# Create an SQLModel, see document for details: https://sqlmodel.tiangolo.com/\nclass Category(SQLModel, table=True):\n    id: Optional[int] = Field(default=None, primary_key=True, nullable=False)\n    name: str = Field(title='CategoryName', max_length=100, unique=True, index=True, nullable=False)\n    description: str = Field(default='', title='Description', max_length=255)\n\n```\n\n- Method 2: Create model through `SQLAlchemy`.\n\n```python\nfrom sqlalchemy import Column, Integer, String\nfrom sqlalchemy.ext.declarative import declarative_base\n\nBase = declarative_base()\n\n\n# Create an SQLAlchemy model, see document for details: https://docs.sqlalchemy.org/en/14/orm/tutorial.html\nclass Category(Base):\n    __tablename__ = 'category'\n    # Specify the Schema class corresponding to the model. It is recommended to specify it. If omitted, it can be automatically generated.\n    __pydantic_model__ = CategorySchema\n\n    id = Column(Integer, primary_key=True, nullable=False)\n    name = Column(String(100), unique=True, index=True, nullable=False)\n    description = Column(String(255), default='')\n```\n\n- Method 3: Create model through `SQLAlchemy 2.0`.\n\n```python\nfrom sqlalchemy import String\nfrom sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column\n\n\nclass Base(DeclarativeBase):\n    pass\n\n\n# Create an SQLAlchemy 2.0 model, see document for details: https://docs.sqlalchemy.org/en/20/orm/quickstart.html\nclass Category(Base):\n    __tablename__ = \"category\"\n    # Specify the Schema class corresponding to the model. It is recommended to specify it. If omitted, it can be automatically generated.\n    __pydantic_model__ = CategorySchema\n\n    id: Mapped[int] = mapped_column(primary_key=True, nullable=False)\n    name: Mapped[str] = mapped_column(String(100), unique=True, index=True, nullable=False)\n    description: Mapped[str] = mapped_column(String(255), default=\"\")\n```\n\n- If you create a model through `sqlalchemy`, it is recommended to create a corresponding pydantic model at the same\n  time, and set `orm_mode=True`.\n\n```python\nfrom pydantic import BaseModel, Field\n\n\nclass CategorySchema(BaseModel):\n    id: Optional[int] = Field(default=None, primary_key=True, nullable=False)\n    name: str = Field(title=\"CategoryName\")\n    description: str = Field(default=\"\", title=\"CategoryDescription\")\n\n    class Config:\n        orm_mode = True\n```\n\n### Register ModelAdmin\n\n```python\nfrom fastapi import FastAPI\nfrom fastapi_amis_admin.admin.settings import Settings\nfrom fastapi_amis_admin.admin.site import AdminSite\nfrom fastapi_amis_admin.admin import admin\n\n# create FastAPI application\napp = FastAPI()\n\n# create AdminSite instance\nsite = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))\n\n\n# register ModelAdmin\n@site.register_admin\nclass CategoryAdmin(admin.ModelAdmin):\n    page_schema = 'Category'\n    # set model\n    model = Category\n\n\n# mount AdminSite instance\nsite.mount_app(app)\n\n\n# create initial database table\n@app.on_event(\"startup\")\nasync def startup():\n    await site.db.async_run_sync(Base.metadata.create_all, is_session=False)\n\n\nif __name__ == '__main__':\n    import uvicorn\n\n    uvicorn.run(app)\n```\n\n## FormAdmin Example\n\n```python\nfrom typing import Any\nfrom fastapi import FastAPI\nfrom pydantic import BaseModel\nfrom starlette.requests import Request\nfrom fastapi_amis_admin.amis.components import Form\nfrom fastapi_amis_admin.admin import admin\nfrom fastapi_amis_admin.admin.settings import Settings\nfrom fastapi_amis_admin.admin.site import AdminSite\nfrom fastapi_amis_admin.crud.schema import BaseApiOut\nfrom fastapi_amis_admin.models.fields import Field\n\n# create FastAPI application\napp = FastAPI()\n\n# create AdminSite instance\nsite = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))\n\n\n# register FormAdmin\n@site.register_admin\nclass UserLoginFormAdmin(admin.FormAdmin):\n    page_schema = 'UserLoginForm'\n    # set form information, optional\n    form = Form(title='This is a test login form', submitText='login')\n\n    # create form schema\n    class schema(BaseModel):\n        username: str = Field(..., title='username', min_length=3, max_length=30)\n        password: str = Field(..., title='password')\n\n    # handle form submission data\n    async def handle(self, request: Request, data: BaseModel, **kwargs) -\u003e BaseApiOut[Any]:\n        if data.username == 'amisadmin' and data.password == 'amisadmin':\n            return BaseApiOut(msg='Login successfully!', data={'token': 'xxxxxx'})\n        return BaseApiOut(status=-1, msg='Incorrect username or password!')\n\n\n# mount AdminSite instance\nsite.mount_app(app)\n\nif __name__ == '__main__':\n    import uvicorn\n\n    uvicorn.run(app)\n```\n\n## Working with Command\n\n```bash\n# Install command line extension\npip install fastapi_amis_admin[cli]\n\n# View help\nfaa --help\n\n# Initialize a `FastAPI-Amis-Admin` project\nfaa new project_name --init\n\n# Initialize a `FastAPI-Amis-Admin` application\nfaa new app_name\n\n# Fast running project\nfaa run\n```\n\n## Preview\n\n- Open `http://127.0.0.1:8000/admin/` in your browser:\n\n![ModelAdmin](https://s2.loli.net/2022/03/20/ItgFYGUONm1jCz5.png)\n\n- Open `http://127.0.0.1:8000/admin/docs` in your browser:\n\n![Docs](https://s2.loli.net/2022/03/20/1GcCiPdmXayxrbH.png)\n\n## Project\n\n- [`Amis-Admin-Theme-Editor`](https://github.com/swelcker/amis-admin-theme-editor):Theme-Editor for the fastapi-amis-admin.\n  Allows to add custom css styles and to apply theme --vars change on the fly.\n- [`FastAPI-User-Auth`](https://github.com/amisadmin/fastapi_user_auth): A simple and powerful `FastAPI` user `RBAC`\n  authentication and authorization library.\n- [`FastAPI-Scheduler`](https://github.com/amisadmin/fastapi_scheduler): A simple scheduled task management `FastAPI` extension\n  based on `APScheduler`.\n- [`FastAPI-Config`](https://github.com/amisadmin/fastapi-config): A visual dynamic configuration management extension package\n  based on `FastAPI-Amis-Admin`.\n- [`FastAPI-Amis-Admin-Demo`](https://github.com/amisadmin/fastapi_amis_admin_demo): An example `FastAPI-Amis-Admin` application.\n- [`FastAPI-User-Auth-Demo`](https://github.com/amisadmin/fastapi_user_auth_demo): An example `FastAPI-User-Auth` application.\n\n## License\n\n- According to the `Apache2.0` protocol, `fastapi-amis-admin` is free and open source. It can be used for commercial for\n  free, but please clearly display copyright information about `FastAPI-Amis-Admin` on the display interface.\n\n","funding_links":[],"categories":["语言资源库","Python","Third-Party Extensions","Uncategorized"],"sub_categories":["python","Admin","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famisadmin%2Ffastapi-amis-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famisadmin%2Ffastapi-amis-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famisadmin%2Ffastapi-amis-admin/lists"}