如何配置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
相关产品推荐
相关产品推荐

