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

如何为多个Django AdminSite配置不同主题?

实现独立AdminSite的差异化主题配置

完全可行,核心思路是利用Django AdminSite的可定制性,让自定义子类AdminSite加载第三方主题模板,默认AdminSite保留原生样式。以下是两种主流方案的具体实现:

方案一:用Jazzmin快速实现(推荐)

Jazzmin本身提供了封装好的AdminSite子类,直接继承即可实现主题替换:

  1. 安装Jazzmin
pip install django-jazzmin
  1. 创建自定义AdminSite子类,继承Jazzmin的AdminSite
# 在项目的admin.py中
from jazzmin.admin import JazzminAdminSite

class CustomJazzminAdmin(JazzminAdminSite):
    site_header = "Jazzmin自定义后台"
    site_title = "Jazzmin管理系统"
    # 可根据Jazzmin文档配置更多自定义选项,比如侧边栏、配色等

# 实例化自定义AdminSite
custom_jazzmin_admin = CustomJazzminAdmin(name='jazzmin_admin')
  1. 注册模型到这个自定义AdminSite
# 示例:注册User模型
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin

custom_jazzmin_admin.register(User, UserAdmin)
  1. 配置urls.py,区分两个AdminSite的访问路径
from django.contrib import admin
from .admin import custom_jazzmin_admin

urlpatterns = [
    path('admin/', admin.site.urls),  # 原生主题
    path('admin-jazzmin/', custom_jazzmin_admin.urls),  # Jazzmin主题
]

方案二:用AdminLTE(django-adminlte-3)手动配置

如果偏好AdminLTE,需要为自定义AdminSite指定全套适配的模板:

  1. 安装django-adminlte-3
pip install django-adminlte-3
  1. 创建自定义AdminSite子类,重写模板属性
# 在项目的admin.py中
from django.contrib.admin import AdminSite

class CustomAdminLTEAdmin(AdminSite):
    site_header = "AdminLTE自定义后台"
    # 指定AdminLTE的核心模板,覆盖原生模板
    base_template = 'adminlte/base.html'
    index_template = 'adminlte/index.html'
    change_list_template = 'adminlte/change_list.html'
    change_form_template = 'adminlte/change_form.html'
    login_template = 'adminlte/login.html'
    logout_template = 'adminlte/logout.html'

# 实例化自定义AdminSite
custom_adminlte_admin = CustomAdminLTEAdmin(name='adminlte_admin')
  1. 注册模型到该AdminSite(同方案一)
  2. 配置urls.py,添加访问路径
from django.contrib import admin
from .admin import custom_adminlte_admin

urlpatterns = [
    path('admin/', admin.site.urls),  # 原生主题
    path('admin-lte/', custom_adminlte_admin.urls),  # AdminLTE主题
]
  1. 确保adminlte已加入INSTALLED_APPS
# settings.py
INSTALLED_APPS = [
    # ...
    'adminlte',
    'django.contrib.admin',
    # ...
]

关键注意事项

  • 不要修改全局ADMIN_SITE设置,否则会替换默认AdminSite的主题
  • 第三方主题必须是适配Django Admin的版本(比如上述两个库),否则会出现只显示模板框架、不加载模型数据的问题
  • 若需要更精细的模板定制,可在项目templates目录下创建对应主题的模板文件,覆盖第三方库的默认模板

内容的提问来源于stack exchange,提问作者Dhrions

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:35:37