Django:覆盖 base_site.html

Posted

技术标签:

【中文标题】Django:覆盖 base_site.html【英文标题】:Django: Overrideing base_site.html 【发布时间】:2014-03-01 12:41:57 【问题描述】:

各位, 我尝试按照Django Tutorial 中的步骤自定义管理模板。我按照字母的步骤创建了一个目录结构如下:

 - myproject/
   - myproject/
     - templates/
       - admin/
         - base_site.html
   - myapp1/
   - manage.py

我编辑了 base_site.html 以将文本“Django 站点管理员”更改为“我的站点管理员”。

我编辑了 myproject/settings.py 以添加:

TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]

运行后,我对 base_site.html 的更改没有生效。

然后我按照this post 上的建议创建了以下目录结构:

 - myproject/
   - myproject/
   - templates/
     - admin/
       - base_site.html
   - myapp1/
   - manage.py

并将以下内容添加到我的 settings.py 文件中:

TEMPLATE_DIRS = (os.path.join(BASE_DIR,'..', 'mytemplates'),)
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

当我访问管理页面时,仍然会看到“Django 管理”。我做错了什么?

【问题讨论】:

【参考方案1】:

BASE_DIR 是指基本目录,因此您应该在新布局中使用 TEMPLATE_DIRS 的原始值。

【讨论】:

就是这样!谢谢你的帮助。虽然 Python 和 Django 总体上非常直观,但模板目录的东西似乎是黑魔法。显然,我没有以正确的方式思考这个问题。你能指出我正确的教程或文档吗?

以上是关于Django:覆盖 base_site.html的主要内容,如果未能解决你的问题,请参考以下文章

django:我如何实际覆盖管理站点模板

自定义 base_site.html 在 Django 中不起作用

Django 教程第 2 部分模板——base_site.html 更改未反映

管理员模板覆盖忽略的标题栏

Django 管理员颜色

未覆盖管理模板上的阻止内容