1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Atomi-fastapi_amis_admin

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

FastAPI-Amis-Admin

FastAPI-Amis-Admin — это высокопроизводительный, эффективный и легко расширяемый фреймворк для администрирования FastAPI.
Вдохновлен Django-admin и имеет такие же мощные функции, как Django-admin.

Pytest Версия пакета Загрузки Чат на Gitter

источник кода · онлайн демо · документация · не удается открыть документацию?

------fastapi-amis-admin — это высокопроизводительный и эффективный фреймворк на основе fastapi & amis с использованием Python 3.7+, и основанный на стандартных типах подсказок Python. Основной целью разработки было улучшение экосистемы приложений и быстрое создание визуальной панели управления для веб-приложения. По лицензии Apache2.0 он является бесплатным и открытым исходным кодом. Однако, чтобы лучше управлять и поддерживать этот проект на долгосрочной основе, очень надеюсь на получение финансовой помощи и поддержки со стороны всех заинтересованных лиц.## Возможности

  • Высокая производительность: Основана на FastAPI. Получите все преимущества.
  • Высокая эффективность: Отличные подсказки типов кода. Более высокая переиспользуемость кода.
  • Поддержка асинхронной и синхронной гибридной записи: ORM основан на SQLModel & SQLAlchemy. Вольный выбор типа базы данных. Поддерживает синхронный и асинхронный режимы. Высокая масштабируемость.
  • Разделение фронтенда и бэкенд: Фронтенд отрисован с помощью Amis, бэкенд интерфейсы автоматически генерируются с помощью fastapi-amis-admin. Интерфейсы могут быть переиспользованы.
  • Высокая масштабируемость: Назадовая страница поддерживает Amis страницы и обычные html страницы. Легко кастомизировать интерфейсы вольно.
  • Автоматическое создание документации API: Автоматически генерирует документацию интерфейсов с помощью FastAPI. Легко отлаживать и делиться интерфейсами.

Зависимости

  • FastAPI: завершение веб-части.
  • SQLModel: завершение отображения модели ORM. Отлично сочетает SQLAlchemy с Pydantic, и имеет все их возможности.
  • Amis: завершение представления администраторской страницы.

Структура

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)

Пример ModelAdmin

Создание модели

  • Поддерживает модели SQLModel, SQLAlchemy, SQLAlchemy 2.0.
  • Метод 1: создание модели через 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='')
  • Метод 3: Создание модели через 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

Регистрация ModelAdmin

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)

Пример 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

# создание приложения 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

Инициализация приложения FastAPI-Amis-Admin

faa new app_name

Быстрое запуск проекта

faa run


## Предварительный просмотр

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

![ModelAdmin](https://s2.loli.net/2022/03/20/ItgFYGUONm1jCz5.png)

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

![Docs](https://s2.loli.net/2022/03/20/1GcCiPdmXayxrbH.png)

## Проект- [`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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления (6)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Atomi-fastapi_amis_admin.git
git@api.gitlife.ru:oschina-mirror/Atomi-fastapi_amis_admin.git
oschina-mirror
Atomi-fastapi_amis_admin
Atomi-fastapi_amis_admin
master