Navbar
Navbar собирает AdminNavbarService. Всегда есть встроенный пункт темы,
затем свои кнопки, dropdown из групп страниц и user menu.
Встроенный пункт темы
django_chassis.navbar.theme поставляет переключатель темы. Его не нужно
регистрировать самому — сервис navbar вставляет его сам.
Свои кнопки и пункты user menu
Объявите классы на сайте:
from django_chassis.components import AdminNavbarButton, AdminUserMenuItem
class ReportsButton(AdminNavbarButton):
slug = 'reports'
label = 'Reports'
icon_class = 'fa-solid fa-chart-line'
def get_url(self, request):
return '/admin/pages/reports/'
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
navbar_button_classes = (ReportsButton,)
user_menu_item_classes = ()
Модуль пользователей добавляет пункты Профиль и Изменить пароль, пока
не задано include_users_module = False. См.
Пользователи и доступ.
Slug должны быть уникальными. Сервис проверяет это до рендера.
Доступные контракты:
AdminNavbarButton— одна ссылка в navbarAdminNavbarDropdown— родитель с дочерними пунктамиAdminUserMenuItem— пункт в меню авторизованного пользователяAdminNavbarItem— общая база
Группы страниц как dropdown
AdminPage с navbar_group = AdminPageGroupOption(...) попадает в dropdown
navbar. Personal-страницы в группу войти не могут.
from django_chassis.options import AdminPageGroupOption
reports = AdminPageGroupOption(slug='reports', label='Reports', icon_class='fa-solid fa-chart-line', order=10)
| Параметр | Тип | По умолчанию |
|---|---|---|
slug | str | обязательный |
label | локализованная строка | обязательный |
icon_class | класс Font Awesome | обязательный |
order | int | 0 |
Тот же тип option используется как dashboard_group для секций действий
dashboard. См. Свои страницы.
Dropdown групп страниц участвуют в общей сортировке navbar вместе со своими
кнопками. Дочерние элементы с opens_modal=True выводятся как modal trigger,
а не как ссылки. См. Модальные компоненты.
Бренд
Изменено в 1.0.1По умолчанию сайт использует иконку из документации
(admin/chassis/icon.svg) как логотип входа и favicon. Переопределите:
chassis_brand_namechassis_brand_logo_static_pathchassis_brand_favicon_static_path
Или переопределите get_chassis_brand() / get_chassis_brand_badge(), чтобы
вернуть BrandDTO / BrandBadgeDTO.
Полные логотипы сохраняют исходные пропорции. Если название входит в изображение, задайте chassis_brand_name = None. Для отдельного квадратного favicon используйте chassis_brand_favicon_static_path или BrandDTO.favicon_static_path; при None используется логотип.