Как настроить django-admin-tools для нескольких сайтов администраторов, не затрагивая администратора по умолчанию
Я использую django-admin-tools
в своем Django
проекте для создания дашборда, подобного пользовательскому админскому сайту. Я успешно настроил django-admin-tools
, следуя официальной документации.
Моя цель - создать пользовательскую админку сайта и настроить django-admin-tools
на работу исключительно для этого сайта, не затрагивая стандартную Django admin site
. Ниже приведена упрощенная версия моего кода:
# Custom Admin Site
class AdminSiteDashboard(AdminSite):
site_header = 'Dashboard'
site_title = 'Dashboard Portal'
index_title = 'Welcome to My Dashboard'
admin_site_dashboard = AdminSiteDashboard(name='admin_dashboard')
# url patterns
urlpatterns = [
path('admin_tools/', include('admin_tools.urls')),
path('admin/', admin.site.urls),
path('dashboard/', admin_site_dashboard.urls),
...
]
# settings
ADMIN_TOOLS_MENU = {
'base.admin_site.admin_site_dashboard': 'base.admin_tools.base_admin_menu.CustomMenu',
}
ADMIN_TOOLS_INDEX_DASHBOARD = {
'base.admin_site.admin_site_dashboard': 'base.admin_tools.base_admin_dashboard.CustomIndexDashboard',
}
ADMIN_TOOLS_APP_INDEX_DASHBOARD = {
'base.admin_site.admin_site_dashboard': 'base.admin_tools.base_admin_dashboard.CustomAppIndexDashboard',
}
Я ожидал, что, настроив django-admin-tools
только для admin_site_dashboard
, сайт администратора по умолчанию останется незатронутым. Однако после настройки, как показано выше, я могу получить доступ к приборной панели по адресу dashboard/
, но при попытке получить доступ к стандартному сайту администратора по адресу admin/
я сталкиваюсь с ошибкой. Ошибка выглядит следующим образом:
ValueError at /admin/ Dashboard menu matching "{'base.admin_site.admin_site_dashboard': 'base.admin_tools.base_admin_menu.CustomMenu'}" not found,{% if user.is_active and user.is_staff and not is_popup %}{% admin_tools_render_menu_css %}{% endif %}
Есть ли способ настроить django-admin-tools
так, чтобы он применялся только к пользовательскому сайту администратора и не мешал стандартному сайту администратора Django?
Любой совет или предложение будут высоко оценены.
из документации django-admin-tools https://django-admin-tools.readthedocs.io/en/latest/multiple_admin_sites.html
Вы должны добавить 'django.contrib.admin.site' в настройки инструментов администрирования
ADMIN_TOOLS_MENU = {
'django.contrib.admin.site': 'base.admin_site.admin',
'base.admin_site.admin_site_dashboard': 'base.admin_tools.base_admin_menu.CustomMenu',
}
ADMIN_TOOLS_INDEX_DASHBOARD = {
'django.contrib.admin.site': 'base.admin_site.admin',
'base.admin_site.admin_site_dashboard': 'base.admin_tools.base_admin_dashboard.CustomIndexDashboard',
}