FastAPI-Amis-Admin — это высокопроизводительный, эффективный и легко расширяемый фреймворк для администрирования FastAPI.
Вдохновлен Django-admin и имеет такие же мощные функции, как Django-admin.
источник кода · онлайн демо · документация · не удается открыть документацию?
------fastapi-amis-admin
— это высокопроизводительный и эффективный фреймворк на основе fastapi
& amis
с использованием Python 3.7+
, и основанный на стандартных типах подсказок Python. Основной целью разработки было улучшение экосистемы приложений и быстрое создание визуальной панели управления для веб-приложения. По лицензии Apache2.0
он является бесплатным и открытым исходным кодом. Однако, чтобы лучше управлять и поддерживать этот проект на долгосрочной основе, очень надеюсь на получение финансовой помощи и поддержки со стороны всех заинтересованных лиц.## Возможности
fastapi-amis-admin
состоит из трёх основных модулей, из которых модули amis
и crud
могут использоваться как отдельные компоненты, а модуль admin
разработан ранее.- amis
: основан на библиотеке данных pydantic
компании Baidu AMIS
. Для быстрого генерирования/парсинга данных.
crud
: основан на FastAPI
и Sqlalchemy
. Для быстрой реализации общих API-интерфейсов CRUD (Create, Read, Update, Delete).admin
: вдохновлен Django-Admin
. Объединяет amis
с crud
. Для быстрой реализации веб-панели управления.pip install fastapi_amis_admin
sqlmodel
в настоящее время не поддерживает sqlalchemy 2.0+
. Если вы используете sqlalchemy 2.0+
для создания модели, вы не сможете использовать sqlmodel
одновременно.fastapi-amis-admin>=0.6.0
, sqlmodel
больше не является обязательной зависимостью. Если вы используете sqlmodel
для создания модели, вы можете установить его следующей командой.pip install fastapi_amis_admin[sqlmodel]
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'))
# монтируем экземпляр AdminSite
site.mount_app(app)
if __name__ == '__main__':
import uvicorn
uvicorn.run(app)
SQLModel
, SQLAlchemy
, SQLAlchemy 2.0
.SQLModel
.from sqlmodel import SQLModel
from fastapi_amis_admin.models.fields import Field
class Base(SQLModel):
pass
```# Создание SQLModel, подробнее см. документацию: https://sqlmodel.tiangolo.com/
class Category(SQLModel, table=True):
id: int = Field(default=None, primary_key=True, nullable=False)
name: str = Field(title='КатегорияНазвание', max_length=100, unique=True, index=True, nullable=False)
description: str = Field(default='', title='Описание', max_length=255)- Метод 2: Создание модели через `SQLAlchemy`.
```python
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
# Создайте модель SQLAlchemy, подробнее см.: https://docs.sqlalchemy.org/en/14/orm/tutorial.html
class Category(Base):
__tablename__ = 'category'
# Укажите схему класса, соответствующую модели. Рекомендуется указывать её явно. Если пропущено, она может быть автоматически сгенерирована.
__pydantic_model__ = CategorySchema
id = Column(Integer, primary_key=True, nullable=False)
name = Column(String(100), unique=True, index=True, nullable=False)
description = Column(String(255), default='')
SQLAlchemy 2.0
.from sqlalchemy import String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
# Создайте модель SQLAlchemy 2.0, подробнее см.: https://docs.sqlalchemy.org/en/20/orm/quickstart.html
class Category(Base):
__tablename__ = "category"
# Укажите схему класса, соответствующую модели. Рекомендуется указывать её явно. Если пропущено, она может быть автоматически сгенерирована.
__pydantic_model__ = CategorySchema
id: Mapped[int] = mapped_column(primary_key=True, nullable=False)
name: Mapped[str] = mapped_column(String(100), unique=True, index=True, nullable=False)
description: Mapped[str] = mapped_column(String(255), default="")
SQLAlchemy
, рекомендуется одновременно создать соответствующую модель Pydantic и установить orm_mode=True
.from pydantic import BaseModel, Field
class CategorySchema(BaseModel):
id: int = Field(default=None, primary_key=True, nullable=False)
name: str = Field(title="CategoryName")
description: str = Field(default="", title="CategoryDescription")
``` class Config:
orm_mode = 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
# создайте приложение FastAPI
app = FastAPI()
```# создание экземпляра AdminSite
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))
# регистрация ModelAdmin
@site.register_admin
class CategoryAdmin(admin.ModelAdmin):
page_schema = 'Категория'
# установка модели
model = Category
# монтирование экземпляра AdminSite
site.mount_app(app)
# создание начальной таблицы базы данных
@app.on_event("startup")
async def startup():
await site.db.async_run_sync(Base.metadata.create_all, is_session=False)
if __name__ == '__main__':
import uvicorn
uvicorn.run(app)
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='Это тестовая форма входа', submit_text='войти')
# создание схемы формы
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='Неправильное имя пользователя или пароль!')
# Монтирование экземпляра AdminSite
site.mount_app(app)
if __name__ == '__main__':
import uvicorn
uvicorn.run(app)
# Установка расширения командной строки
pip install fastapi_amis_admin[cli]
# Просмотр справки
faa --help
# Инициализация проекта FastAPI-Amis-Admin
faa new project_name --init
faa new app_name
faa run
## Предварительный просмотр
- Откройте `http://127.0.0.1:8000/admin/` в вашем браузере:

- Откройте `http://127.0.0.1:8000/admin/docs` в вашем браузере:

## Проект- [`Amis-Admin-Theme-Editor`](https://github.com/swelcker/amis-admin-theme-editor): Инструмент для редактирования тем для `fastapi-amis-admin`. Предоставляет возможность добавления пользовательских CSS стилей и применения изменений темы на лету.
- [`FastAPI-User-Auth`](https://github.com/amisadmin/fastapi_user_auth): Простая и мощная библиотека аутентификации и авторизации пользователей с использованием `FastAPI` и `RBAC`.
- [`FastAPI-Scheduler`](https://github.com/amisadmin/fastapi_scheduler): Расширение `FastAPI`, основанное на `APScheduler`, для управления расписанием задач.
- [`FastAPI-Config`](https://github.com/amisadmin/fastapi-config): Расширение для визуального и динамического управления конфигурацией, основанное на `FastAPI-Amis-Admin`.
- [`FastAPI-Amis-Admin-Demo`](https://github.com/amisadmin/fastapi_amis_admin_demo): Пример приложения `FastAPI-Amis-Admin`.
- [`FastAPI-User-Auth-Demo`](https://github.com/amisadmin/fastapi_user_auth_demo): Пример приложения `FastAPI-User-Auth`.## Лицензия
- В соответствии с лицензией `Apache2.0`, `fastapi-amis-admin` является бесплатным и открытым исходным кодом. Он может использоваться для коммерческих целей бесплатно, но просим указывать информацию о правах использования `FastAPI-Amis-Admin` на экране.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )