You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置django-admin-tools以适配多管理站点且不影响默认Django Admin

如何配置django-admin-tools以适配多管理站点且不影响默认Django Admin

嘿,我来帮你搞定这个问题!你已经迈出了正确的第一步——创建了自定义AdminSite实例,接下来只需要调整几处配置和代码,就能让django-admin-tools只专属你的自定义仪表盘站点,完全不会干扰默认的Django Admin。

第一步:精准配置django-admin-tools的专属绑定

django-admin-tools支持针对单个AdminSite实例单独配置菜单和仪表盘,你只需要在settings.py里把配置项的键设置为自定义站点实例的完整导入路径即可:

# settings.py
# 配置自定义站点的专属菜单
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',
}

这里的base.admin_site.admin_site_dashboard要替换成你实际项目中自定义AdminSite实例的完整路径,比如你的项目结构是myproject/admin_site.py里定义了admin_site_dashboard,那路径就是myproject.admin_site.admin_site_dashboard。

第二步:让自定义站点加载django-admin-tools的模板

默认Django Admin用的是自带模板,我们需要告诉自定义站点使用admin_tools的仪表盘模板,在你的AdminSiteDashboard类里添加index_template属性:

# 你的自定义AdminSite类所在文件
from django.contrib.admin import AdminSite

class AdminSiteDashboard(AdminSite):
    site_header = 'Dashboard'
    site_title = 'Dashboard Portal'
    index_title = 'Welcome to My Dashboard'
    # 指定使用admin_tools的首页模板
    index_template = 'admin_tools/dashboard/index.html'

admin_site_dashboard = AdminSiteDashboard(name='admin_dashboard')

第三步:把模型注册到自定义站点(别搞错对象!)

一定要注意:不要用默认的admin.site.register(),而是用你自己的admin_site_dashboard.register()来注册需要在仪表盘显示的模型:

# 比如在app的admin.py里
from django.contrib import admin
from .models import YourModel
from path.to.your.admin_site import admin_site_dashboard

class YourModelAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'created_at')
    # 其他模型配置...

# 注册到自定义仪表盘站点
admin_site_dashboard.register(YourModel, YourModelAdmin)

第四步:验证URL配置(你的现有配置已经没问题!)

你当前的URL配置是正确的:

  • admin/ 对应默认Django Admin,完全不受admin_tools影响
  • dashboard/ 对应你的自定义仪表盘站点,会加载admin_tools的组件
  • admin_tools/ 是admin_tools自身的必要URL,不用修改

避坑提醒

  • 不要随便修改Django默认Admin的模板,通过给自定义站点单独指定模板的方式,就能完全隔离两个站点的样式和功能
  • 确保settings里的配置路径绝对正确,路径写错会导致admin_tools无法绑定到你的自定义站点,出现无样式或默认仪表盘的问题

备注:内容来源于stack exchange,提问作者Vigor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:33:10