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

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

Добавлено в 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).

Опциональный extra Celery

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

pip install 'django-chassis[celery]'

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

Запуск WSGI под Gunicorn:

python manage.py run_gunicorn --port=8000 --workers=2

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

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

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

См. также