Машинный перевод под контролем человека
Этот контент переведён с помощью машинной генерации, направляемой составленными людьми глоссариями и руководствами по стилю. Поскольку текст не проверяется вручную построчно, возможны отдельные ошибки или неестественные формулировки.
В случае любых расхождений авторитетным источником считается оригинальная версия на английском языке.
title: Конфигурация Admin description: Настройте свой экземпляр starlette-admin: кастомизируйте темы, маршрутизацию и общие параметры безопасности.
Admin
Все настройки уровня всего админ-панеля передаются как именованные аргументы в класс Admin: заголовок в навигационной панели, путь монтирования, конфигурация CSRF и аутентификации, а также используемая тема оформления.
Базовое использование
Начните с импорта класса Admin из пакета contrib, соответствующего вашей объектно-реляционной проекции (ORM):
from starlette_admin.contrib.sqla import Admin # SQLAlchemy
from starlette_admin.contrib.sqlmodel import Admin # SQLModel
from starlette_admin.contrib.beanie import Admin # Beanie
from starlette_admin.contrib.mongoengine import Admin # MongoEngine
from starlette_admin.contrib.tortoise import Admin # Tortoise ORM
Вот минимальная конфигурация на основе SQLAlchemy:
from sqlalchemy import create_engine
from starlette.applications import Starlette
from starlette_admin.contrib.sqla import Admin, ModelView
from myapp.models import Post
engine = create_engine("sqlite:///admin.sqlite")
app = Starlette()
admin = Admin(
session_provider=engine,
title="My Admin",
base_url="/admin",
secret_key="a-long-random-string",
)
admin.add_view(ModelView(Post))
admin.mount_to(app)
titleзадаёт текст в навигационной панели и содержимое HTML-тега<title>.base_urlопределяет префикс пути, по которому монтируется админ-панель.secret_keyподписывает cookie для CSRF и flash-сообщений.add_viewрегистрирует представление, аmount_toформирует маршруты и middleware админ-панели перед монтированием их в ваше приложение.
Каждый класс Admin принимает все описанные ниже параметры конфигурации, а некоторые добавляют поведение, специфичное для конкретного backend:
contrib.sqla.Admin(session_provider, ...)принимает в качестве первого позиционного аргументаEngine,AsyncEngine,sessionmakerилиasync_sessionmakerи автоматически добавляетDBSessionMiddleware.contrib.sqlmodel.Admin— это тот же класс, реэкспортированный повторно. Подробнее см. SQLAlchemy и SQLModel.contrib.beanie.Admin,contrib.mongoengine.Adminиcontrib.tortoise.Adminне принимают дополнительных аргументов конструктора, поскольку Beanie, MongoEngine и Tortoise ORM управляют собственными подключениями вне админ-панели.mongoengine.Adminтакже регистрирует маршрут для раздачи файлов GridFS внутриmount_to. Подробнее см. Beanie, MongoEngine и Tortoise ORM.
Полный справочник
Конструктор Admin принимает все перечисленные ниже параметры в качестве именованных аргументов.
Идентичность и брендинг
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
title |
str |
"Admin" |
Текст в навигационной панели и тег <title>. |
logo_url |
str | Callable[[Request], str | None] | None |
None |
Логотип в навигационной панели вместо title. Передайте обычный URL или функцию, вычисляющую его для каждого запроса, например, для брендинга по арендаторам. |
login_logo_url |
str | Callable[[Request], str | None] | None |
None |
Логотип на странице входа вместо logo_url. Если не задан, используется logo_url. |
favicon_url |
str | Callable[[Request], str | None] | None |
None |
Значение href тега <link> для favicon. |
logo_url, login_logo_url и favicon_url принимают либо строку, либо функцию вида (request) -> str | None. Используйте функцию, если брендинг зависит от запроса, например, в мультитенантном приложении или при обслуживании нескольких доменных имён:
def logo_for_tenant(request):
return f"https://cdn.example.com/{request.state.tenant}/logo.png"
admin = Admin(engine, title="My Admin", logo_url=logo_for_tenant)
Монтирование
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
base_url |
str |
"/admin" |
URL-префикс, под которым монтируется админ-панель. |
route_name |
str |
"admin" |
Имя монтирования в Starlette. Все внутренние ссылки (list, edit, экспорт, статические файлы) генерируются вызовом request.url_for(route_name + ":list", ...). |
Чтобы запустить несколько экземпляров Admin в одном приложении, задайте каждому из них уникальные base_url и route_name. В противном случае ссылки, сгенерированные одной панелью, могут указывать на другую. См. Несколько экземпляров Admin.
Шаблоны, статические файлы и тема
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
templates_dir |
str |
"templates" |
Каталог, в котором сначала ищутся переопределения шаблонов, прежде чем используются встроенные шаблоны. |
static_dir |
str | None |
None |
Каталог дополнительных статических файлов, раздаваемых вместе со встроенными CSS и JS. |
theme |
BaseTheme |
DefaultTheme() |
Подкласс темы, определяющий шаблоны макета, набор иконок и статические ресурсы. |
Разделы Свои темы и Шаблоны подробно раскрывают эти параметры.
Главная страница
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
index_view |
CustomView | None |
None (создаётся DefaultIndexView на основе зарегистрированных представлений) |
Страница, отображаемая по адресу base_url. |
Главная страница по умолчанию — приветственный баннер плюс одна панель для каждого зарегистрированного представления модели с указанием количества записей. Чтобы заменить её, передайте собственный CustomView, как правило, подкласс DefaultIndexView или любой CustomView с widget. См. Свои представления и виджеты.
Аутентификация, безопасность и защита данных
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
auth_provider |
BaseAuthProvider | None |
None (админ-панель доступна всем) |
Контролирует доступ ко всем маршрутам. См. Аутентификация. |
secret_key |
str | None |
None (при запуске генерируется случайный ключ с выдачей UserWarning) |
Подписывает cookie для CSRF и flash-сообщений. |
middlewares |
Sequence[Middleware] | None |
None |
Дополнительное middleware Starlette, выполняемое помимо CSRF-, flash- и auth-middleware, которые админ-панель добавляет самостоятельно. |
import_config |
ImportConfig | None |
None (значения по умолчанию ImportConfig()) |
Ограничения на размер загрузки и защиту от ZIP-бомб для endpoint импорта. |
export_config |
ExportConfig | None |
None (значения по умолчанию ExportConfig()) |
Ограничения на количество строк и скачивание файлов по URL для endpoint экспорта. |
Руководство Безопасность подробно описывает все пять параметров.
Локаль и часовой пояс
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
i18n_config |
I18nConfig | None |
None (только английский язык, без LocaleMiddleware) |
Включает переведённые строки интерфейса. |
timezone_config |
TimezoneConfig | None |
TimezoneConfig() (включён) |
Преобразует отображаемые дату и время к часовому поясу пользователя. |
Полное руководство см. в разделе Интернационализация и часовые пояса.
Отладка
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
debug |
bool |
False |
При значении True вызывает starlette_admin.logging.configure_logging() перед запуском, что включает цветной консольный логгирование уровня DEBUG для пакета starlette_admin. |
admin = Admin(
session_provider=engine, title="My Admin", secret_key="a-long-random-string", debug=True
)
Отладочное логирование помогает при разработке. Для каждого запроса логируется выполненное middleware, представление, обработавшее URL, а также причина успешного или неудачного прохождения проверки прав доступа.
Warning
В production держите debug=False. Логирование уровня DEBUG многословно и создаёт заметную нагрузку на каждый запрос.
Для более лёгкого варианта вызовите starlette_admin.logging.configure_logging(level=logging.INFO) самостоятельно вместо передачи debug=True. Вы получите обработчик без подробностей уровня DEBUG.
Регистрация представлений и монтирование
После создания экземпляра Admin зарегистрируйте свои представления и подключите админ-панель к приложению.
admin.add_view(ModelView(Post)) # Register a view (BaseModelView, CustomView, and so on)
admin.mount_to(app) # Mount the admin onto your Starlette or FastAPI app
Регистрация представлений
Используйте add_view, чтобы добавить компоненты на панель управления. Метод принимает как экземпляр представления, так и его класс; вы можете регистрировать представления моделей, пользовательские страницы, выпадающие меню и внешние ссылки.
Монтирование приложения
После регистрации всех представлений вызовите mount_to(app) ровно один раз, чтобы подключить админ-панель к вашему приложению на Starlette или FastAPI. На этом шаге финализируются конфигурация маршрутизации и безопасности.
Порядок действий имеет значение
Монтирование фиксирует конфигурацию админ-панели, чтобы каждое представление было корректно связано с маршрутами.
- Обращение к
admin.appдо монтирования вызываетRuntimeError. - Регистрация ещё одного представления или повторный вызов
mount_toпосле первого монтирования также вызываютRuntimeError.
admin.app # Raises RuntimeError: not mounted yet
admin.mount_to(app)
admin.app # Returns the mounted sub-application
admin.add_view(ModelView(Comment)) # Raises RuntimeError: already mounted
Что дальше
- Безопасность: параметр
secret_key, CSRF и ограничения на экспорт и импорт. - Аутентификация: подключение
auth_provider. - Несколько экземпляров Admin: запуск более одного
Adminв одном приложении.