这是我在 settings.py 中的 TEMPLATES 部分:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'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.contrib.messages.context_processors.messages',
],
},
},
]
我在应用程序目录中使用模板并且它有效。但是每当我尝试使用全局模板目录(os.path.join(BASE_DIR,'模板')的布局扩展它时,我测试过它),django 会引发 TemplateDoesNotExist 错误。这是模板加载器事后分析,其中不包括我的 DIRS 目录:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/templates/layouts/default.html (File does not exist)
/usr/local/lib/python2.7/dist-packages/django/contrib/auth/templates/layouts/default.html (File does not exist)
/home/foundation/public/foundation/foundation/event_request/templates/layouts/default.html (File does not exist)
**更新:** 似乎 apache 加载了 django 1.5 而不是 django 1.8。这可能是个问题。
请您参考如下方法:
登录后
Using loader django.template.loaders.filesystem.Loader:
loader 应该打印它试图找到你的模板的所有可能位置,就像它是在 app_directories loader 的类似日志之后一样。如果此处没有路径,请仔细检查您的 TEMPLATES 设置是否正确定义,是否未在您的设置或其他文件中的某个地方被覆盖,以及 Django 是否正确加载该设置文件。
当 DEBUG 设置为 True 时,您可以抛出一些异常以获得 500 服务器错误,在错误页面上您将获得 Django 看到的所有设置的方便列表。
还要检查你的 WSGI 服务器是否正在加载正确版本的 django,旧版本没有 TEMPLATE 设置(它被分成多个设置)。
