FastAPI-Amis-Admin — это высокопроизводительный, эффективный и легко расширяемый фреймворк для создания административных панелей на основе FastAPI.
Вдохновлен Django-Admin и обладает мощными возможностями, сравнимыми с ними.
Исходный код · Онлайн демо · Документация · Если документация недоступна?
---fastapi-amis-admin
— это фреймework для создания веб-административных панелей на основе fastapi
+ amis
. Он использует Python 3.7+ и основан на стандартных типах Python. Целью разработки fastapi-amis-admin
было улучшение экосистемы приложений на основе fastapi
, позволяя быстро создавать визуальные административные панели для веб-приложений на основе fastapi
.## Ключевые характеристики
Высокая производительность: основана на FastAPI, что позволяет использовать все преимущества этого фреймворка.
Большая скорость выполнения: полные типы данных для кода, повышающие повторное использование кода.
Поддерживает асинхронное и синхронное программирование вместе: ORM основан на SQLModel
+ Sqlalchemy
, что позволяет свободно настраивать тип базы данных, поддерживаются как асинхронные, так и синхронные режимы, что делает его легко расширяемым.
Разделение клиентской и серверной части: Клиентская часть отрисовывается с помощью Amis
, а серверные API-интерфейсы генерируются автоматически с помощью fastapi-amis-admin
. Интерфейсы могут повторно использоваться.
Высокая расширяемость: Внутренние страницы поддерживают как страницы Amis
, так и обычные HTML
страницы, что позволяет разработчикам легко кастомизировать внешний вид.
Автоматическое создание документации API: Документация API создаётся автоматически благодаря FastAPI
, что облегчает отладку и делится между разработчиками.
SQLAlchemy
и Pydantic
)Проект fastapi-amis-admin
состоит из трёх основных модулей, из которых amis
и crud
можно использовать как независимые компоненты, а admin
строится на основе этих двух.
amis
: Библиотека для создания моделей Pydantic на основе baidu amis
, используется для быстрого создания/парсинга данных JSON 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'))
# Подключение административной панели
site.mount_app(app)
if __name__ == '__main__':
import uvicorn
uvicorn.run(app)
```## Пример управления моделями
### Создание модели
- Поддерживает модели `SQLModel`, `SQLAlchemy` и `SQLAlchemy 2.0`.
- Метод 1: Создание модели через `SQLModel`.
```python
from sqlmodel import SQLModel
from fastapi_amis_admin.models.fields import Field
from sqlmodel import SQLModel
import sqlmodel
class Base(sqlmodel.SQLModel):
pass
# Создание модели SQLModel, подробнее см.: https://sqlmodel.tiangolo.com/
class Категория(sqlmodel.SQLModel, table=True):
id: int = sqlmodel.Field(default=None, primary_key=True, nullable=False)
имя: str = sqlmodel.Field(title='Название категории', max_length=100, unique=True, index=True, nullable=False)
описание: str = sqlmodel.Field(default='', title='Описание', max_length=255)
# Второй способ: создание модели через SQLAlchemy
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 Категория(Base):
__tablename__ = 'категория'
__pydantic_model__ = КатегорияSchema # Указание соответствующего Schema класса. Опционально, но рекомендовано.
id = Column(Integer, primary_key=True, nullable=False)
имя = Column(String(100), unique=True, index=True, nullable=False)
описание = 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 Категория(Base):
__tablename__ = "категория"
__pydantic_model__ = КатегорияSchema # Указание соответствующего Schema класса. Опционально, но рекомендовано.
``` id: Mapped[int] = mapped_column(primary_key=True, nullable=False)
имя: Mapped[str] = mapped_column(String(100), unique=True, index=True, nullable=False)
описание: Mapped[str] = mapped_column(String(255), default="")
# Если вы используете SQLAlchemy для создания моделей, рекомендуется также создать соответствующую модель Pydantic,
# и установить `orm_mode=True`.
from pydantic import BaseModel, Field
class КатегорияSchema(BaseModel):
id: int = Field(default=None, primary_key=True, nullable=False)
имя: str = Field(title="Название категории")
описание: str = Field(default="", title="Описание категории")
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
app = FastAPI()
site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))
@site.register_admin class CategoryAdmin(admin.ModelAdmin): page_schema = 'Управление категориями' # Конфигурирование управляемой модели model = Category
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"))
# Регистрация формы UserLoginFormAdmin
@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="Неправильное имя пользователя или пароль!")
# Подключение административной панели к приложению
site.mount_app(app)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app)
## Использование командной строки
```bash
# Установка расширения командной строки
pip install fastapi_amis_admin[cli]
# Просмотр справки
faa --help
# Инициализация проекта FastAPI-Amis-Admin
faa new project_name --init
FastAPI-Amis-Admin
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
: тема редактора FastAPI-Amis-Admin
. Добавление пользовательских CSS стилей и применение тем, изменения вступают в силу немедленно.FastAPI-User-Auth
: простая и мощная библиотека аутентификации и авторизации пользователей RBAC
для FastAPI
.FastAPI-Scheduler
: расширение FastAPI
, основанное на APScheduler
, для управления задачами с использованием планировщика.FastAPI-Config
: расширение FastAPI-Amis-Admin
для визуального динамического управления конфигурациями.FastAPI-Amis-Admin-Demo
: пример приложения FastAPI-Amis-Admin
.FastAPI-User-Auth-Demo
: пример приложения FastAPI-User-Auth
.fastapi-amis-admin
доступен бесплатно для использования на условиях лицензии Apache2.0
. Можно использовать для коммерческих целей, но требуется указание информации о правах использования FastAPI-Amis-Admin
на странице отображения.Благодарим следующих разработчиков за вклад в проект FastAPI-Amis-Admin
:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )