Skip to main content
 首页 » 编程设计

python之Django 1.8 忽略 DIRS,找不到模板

2024年10月24日36zhoujg

这是我在 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 设置(它被分成多个设置)。