在django 1.9中获取TemplateDoesNotExist错误

use*_*443 7 django django-templates django-admin

我今天面临着很奇怪的问题.我正在获取TemplateDoesNotExist(请参阅第一张图片),但当我尝试使用调试工具栏调试模板源时,它正确显示模板路径(参见图2)更奇怪的是,当我点击特定模板按钮时,它正确显示源的模板.

这是我第一次遇到这样的问题.有人可以解释为什么我收到此错误.

编辑:添加settings.py文件(相关部分)

SETTINGS_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(SETTINGS_PATH, 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
Run Code Online (Sandbox Code Playgroud)

]

谢谢

在此输入图像描述

在此输入图像描述)

小智 13

我和Django 1.9有类似的问题.我刚刚在settings.py文件的TEMPLATES中更改了DIRS.

试试这个

'DIRS': [os.path.join(BASE_DIR,'templates')],
Run Code Online (Sandbox Code Playgroud)

而不是你的

'DIRS':[os.path.join(SETTINGS_PATH,'templates')], 
Run Code Online (Sandbox Code Playgroud)

尝试使用此代码而不是TEMPLATES

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR,'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',

        ],
    },
},] 
Run Code Online (Sandbox Code Playgroud)


MZA*_*MZA 5

我今天升级到1.9,突然遇到了同样的问题.对我来说,似乎向模板中添加"'APP_DIRS':True,"可以解决问题(我通过添加/删除它来切换几次并且它工作/失败).

那么APP_DIRS做了什么:如果我正确理解文档(https://docs.djangoproject.com/en/1.9/ref/templates/api/),它会读取默认的Django模板(如果为True).基本上,95%的项目应该是这种情况.