2017-05-15 52 views
0

我的admin/base_site.html不会加载或被django的admin/base_site.html覆盖。请让我知道我错过了(我最近开始)Django admin/site_base.html覆盖我的admin/site_base.html

我有我的模板在

BASE_DIR /模板/管理/ base_site.html

在设置

TEMPLATES = [ 
    { 
     "BACKEND": "django.template.backends.django.DjangoTemplates", 
     "DIRS": [ 
      os.path.join(BASE_DIR, "templates"), 
     ], 
     "APP_DIRS": True, 
     "OPTIONS": { 
      'debug': True, 
      "context_processors": [ 
       "django.contrib.auth.context_processors.auth", 
       "django.template.context_processors.debug", 
       "django.template.context_processors.i18n", 
       "django.template.context_processors.media", 
       "django.template.context_processors.static", 
       "django.template.context_processors.tz", 
       "django.template.context_processors.request", 
       "django.contrib.messages.context_processors.messages", 
       "account.context_processors.account", 
       "pinax_theme_bootstrap.context_processors.theme", 
      ], 
     }, 
    }, 
] 

编辑:我在我的问题中犯了一个错误,我的模板实际上是在

PROJECT_ROOT /模板/管理/ base_site.html

其中PROJECT_ROOT是manage.py的目录。

回答

0

确保您的应用程序在你的Django settings.py

事实上的INSTALLED_APPSdjango.contrib.admin之前声明,Django的模板加载器将在INSTALLED_APPS穿行的应用程序,并抢了先匹配模板作为docs描述下。

INSTALLED_APPS的顺序很重要!例如,如果您希望 自定义Django管理员,则可以选择使用myproject.polls中的admin/base_site.html从django.contrib.admin, 覆盖标准admin/base_site.html模板 。 然后您必须 确保您的myproject.polls位于INSTALLED_APPS的django.contrib.admin 之前,否则django.contrib.admin将首先加载 ,您的设置将被忽略。

+0

看起来像这样的情况如果我把我的模板放在“myproject/polls/templates/admin”下,但如果我将模板保留在“myproject/templates/admin”?不应该也加载和覆盖之前加载的任何东西? – Davit

+0

它的确应该是因为根据文档,第一个默认的加载器是'django.template.loaders.filesystem.Loader',它使用'DIRS'。创建了BASE_DIR/templates目录后,你重新启动了服务器吗?尝试从该目录加载一个模板,与其他模块没有名称冲突,以检查服务器是否真的在该目录中寻找模板...希望它有帮助。 –

0

解决的办法是改变DIRS到

"DIRS": [ 
     os.path.join(BASE_DIR, "templates"), 
     os.path.join(PROJECT_ROOT, "templates"), 
    ], 

的问题是在设置。

"DIRS": [ 
     os.path.join(BASE_DIR, "templates"), 
    ], 

这里BASE_DIR是主要的应用程序的目录中,因此DIRS包括的mysite/mysite的/模板

有我question.I错误思想BASE_DIR是目录我的项目因此我的模板是

BASE_DIR/templates/admin/base_site.html

,但实际上它是在

PROJECT_ROOT /模板/管理(其中管理。py是)