Django 2.0.5 Admin模板覆盖失败问题求助
解决Django Admin模板覆盖不生效的问题
别急,我来帮你一步步排查问题——你已经做了很多正确的操作,可能只是几个细节没注意到:
1. 先确认你的修改是否已经部分生效
首先,先登录进后台首页(不是登录页),看看顶部的标题是不是已经变成你设置的Bug administration了?
- 如果已经变了,说明你的
base_site.html配置是有效的!你之前看到的登录页的“Django Administration”是另一个模板控制的,base_site.html只负责登录后的后台界面标题。 - 如果登录后还是默认标题,那我们再往下排查。
2. 检查模板文件的路径是否完全正确
你的settings.py里TEMPLATES的DIRS配置是os.path.join(BASE_DIR, 'templates'),这意味着你的模板文件必须放在项目根目录下的templates文件夹里,路径结构应该是这样的:
你的项目根目录/ ├── BugReport/ # 项目配置文件夹(包含settings.py) ├── Bugs/ # 你的应用 ├── templates/ # 项目级模板文件夹 │ └── admin/ │ └── base_site.html └── db.sqlite3
你可以在PyCharm里右键点击templates文件夹,查看它的绝对路径,确认是否和BASE_DIR拼接后的路径一致(可以临时在settings.py里加一行print(BASE_DIR),运行项目后在控制台查看路径)。
3. 如果是登录页的标题没改,需要单独修改登录模板
登录页的“Django Administration”来自admin/login.html模板,这个模板和base_site.html是完全分开的。要修改它的话:
- 找到你的Python环境里的
django/contrib/admin/templates/admin/login.html文件(如果用了虚拟环境,就在虚拟环境的Lib/site-packages/django/contrib/admin/templates/admin/目录下)。 - 把这个文件复制到你项目的
templates/admin/目录下。 - 打开复制后的
login.html,找到类似这样的代码:
把它改成你想要的内容,比如:<h1>{{ site_header|default:_('Django Administration') }}</h1>
或者保持变量引用,让它和<h1>Bug Administration</h1>base_site.html的设置同步。
4. 清除浏览器缓存再测试
有时候浏览器会缓存旧的模板内容,尤其是开发环境下偶尔也会出现这种情况。可以用无痕模式打开后台,或者按Ctrl+F5强制刷新页面,看看修改是否生效。
额外小检查
- 确认你的
INSTALLED_APPS顺序没问题:你把Bugs放在了django.contrib.admin前面,这是正确的,能让Django优先加载你的应用或项目级模板。 - 确认
DEBUG=True(你的配置里已经开了),开发环境下Django会自动重载模板,但如果修改了settings.py,记得重启PyCharm里的服务。
内容的提问来源于stack exchange,提问作者user9779509
相关产品推荐
相关产品推荐

