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

如何修改Django的admin管理后台的HTML、CSS、JS样式?

Django admin 自定义样式可行性说明

完全可以实现,且官方提供了合规的自定义路径,无需修改Django框架本身的源码,也不会影响后续框架版本升级。

具体操作方案

分为三种常见实现方式,可根据你的修改需求灵活选择:

方案1:全量覆盖模板/静态文件(适合大幅修改页面结构、样式)

  • 首先在你的Django项目根目录下新建两个文件夹:templates/admin/(存放自定义模板)、static/admin/(存放自定义静态资源)
  • 打开项目配置文件settings.py,做两处调整:
    1. 找到INSTALLED_APPS配置项,确保你自己的业务应用、自定义静态资源对应的路径配置,排在django.contrib.admin之前,优先级高于官方admin
    2. 找到TEMPLATES配置项,确认DIRS列表中包含你刚创建的templates文件夹路径,示例配置:
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [BASE_DIR / 'templates'], # 确保这行存在
            'APP_DIRS': True,
            ...
        }
    ]
    
  • 如果你需要修改某个admin页面的HTML结构,从本地Python环境的Django安装路径下,找到django/contrib/admin/templates/admin/目录,把对应要修改的模板文件复制到你项目的templates/admin/目录下直接修改即可,比如要改全局后台布局就复制base.html,要改登录页就复制login.html
  • 要修改CSS/JS的话,要么在你复制的自定义模板里新增自定义静态资源引用,要么把你写好的样式、脚本文件放到static/admin/对应的子目录下,和官方admin的同名文件重名,就会自动覆盖默认资源。

方案2:注入自定义静态资源(适合只改样式/交互,不调整HTML结构)

如果不需要修改原有页面结构,只是要加自定义样式或者脚本,不需要动模板文件,直接通过Admin类的Media属性注入即可:

  • 给单个模型的管理页加自定义资源,示例代码:
from django.contrib import admin
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    # 你原有Admin的配置,比如list_display、search_fields等
    list_display = ('id', 'name')

    class Media:
        css = {
            # 第一个参数是资源生效的媒体类型,all表示所有设备都生效
            'all': ('css/your_custom_style.css',)
        }
        # 这里填你自己的js文件路径
        js = ('js/your_custom_script.js',)

admin.site.register(YourModel, YourModelAdmin)
  • 要给整个admin后台全局注入资源,自定义AdminSite类后给它添加Media属性即可。

方案3:直接使用第三方主题(适合不想自己写样式,快速换风格)

如果不想从零写样式,可以直接用社区封装好的Django admin主题包,安装完成后按照文档调整INSTALLED_APPS配置即可快速完成样式替换。

注意:禁止直接修改Python环境下Django安装目录内的admin源码文件,否则升级Django版本时所有修改会被覆盖,也会影响本地其他Django项目的admin功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:51:01