Перейти к основному содержимому

Начало работы

Добавлено в 1.0.1

Короткий путь от пустого Django-проекта к рабочему Chassis Admin: установка пакета, порядок приложений, свой AdminSite и один ModelAdmin с options.

Установка​

pip install django-chassis

Поставьте 'django_chassis' перед 'django.contrib.admin', чтобы шаблоны пакета перекрыли стандартный Admin:

INSTALLED_APPS = [
'django_chassis',
'django.contrib.admin',
# ...
]

Если порядок обратный, Django сначала загрузит стандартные шаблоны Admin, и оболочка Chassis не появится.

Chassis site регистрирует стандартных пользователей и группы (без продуктовых ролей), сессии, попытки входа и журнал Admin. Подключите middleware сессий и аудита после аутентификации; см. Пользователи и доступ.

Создайте AdminSite​

ChassisAdminSiteMixin должен стоять перед AdminSite в MRO.

from django.contrib.admin import AdminSite
from django.urls import path
from django.utils.translation import gettext_lazy as _

from django_chassis.mixins import ChassisAdminSiteMixin


class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
chassis_brand_name = _('My project')
chassis_brand_logo_static_path = 'img/logo.png'


admin_site = CustomAdminSite(name='admin')

Подключите этот экземпляр в urls.py вместо admin.site.urls:

from django.urls import path

from myproject.admin import admin_site

urlpatterns = [path('admin/', admin_site.urls)]

Создайте ModelAdmin​

ChassisAdminMixin должен стоять перед ModelAdmin. Возможности собираются в списке options — frozen dataclass, а не самодельные развилки шаблонов.

from django.contrib.admin import ModelAdmin

from django_chassis.mixins import ChassisAdminMixin
from django_chassis.options import RowActionsOption, SearchOption

from catalog.models import Book


class BookAdmin(ChassisAdminMixin, ModelAdmin):
options = [SearchOption(fields=['title', 'isbn']), RowActionsOption()]


admin_site.register(Book, BookAdmin)

RowActionsOption() без аргументов добавляет кнопку просмотра в последней колонке changelist. Первая колонка по умолчанию не ссылка (chassis_link_first_column = False).

Опциональные extras worker​

Изменено в 1.0.19

Файлы import/export пишутся в STORAGES['media']. Фоновая обработка опциональна:

pip install 'django-chassis[dramatiq]'
# or / либо
pip install 'django-chassis[celery]'

Перед включением провайдера worker в продакшене см. Backend import и export.

Запуск WSGI-проекта под Gunicorn (опционально):

Изменено в 1.0.20
pip install 'django-chassis[gunicorn]'
python manage.py run_gunicorn --port=8000 --workers=2

См. Настройки и checks.

ASGI и комбинированные extras​

Добавлено в 1.0.20
pip install 'django-chassis[uvicorn,dramatiq]'
python manage.py run_uvicorn --host 127.0.0.1 --port 8000 --workers 1 --reload
# Все опциональные runtime: Gunicorn, Uvicorn, Dramatiq и Celery
pip install 'django-chassis[all]'

Базовый пакет не зависит от веб-сервера или внешнего worker. Несколько extras объединяют свои зависимости. [uvicorn] устанавливает uvicorn[standard] с WebSocket и reload; [dramatiq] — runtime существующего адаптера Dramatiq. Проект задаёт ASGI_APPLICATION, брокер worker и хранилища. Пакеты выбранного брокера, например dramatiq-postgres, и драйверы PostgreSQL остаются зависимостями приложения. Установка extras не запускает серверы/worker и не включает import/export. См. Настройки и checks.

Что читать дальше​

  1. Как это работает — кто разбирает options на запросе.
  2. Admin site — бренд, sidebar, страницы, dashboard.
  3. ModelAdmin — список options и Settings.
  4. Каталог options — каждое поле каждого option.

См. также​