在django 1.9

时间:2016-01-28 19:33:25

标签: django django-templates django-admin

我今天面临一个奇怪的问题。我正在获取TemplateDoesNotExist(请参阅第一张图片)但当我尝试使用debug-toolbar调试模板源时,它正确显示模板路径(参见图像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',
        ],
    },
},

由于

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:13)

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

试试这个

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

而不是你的

'DIRS':[os.path.join(SETTINGS_PATH,'templates')], 

尝试使用此代码而不是 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',

        ],
    },
},] 

答案 1 :(得分:5)

我今天升级到1.9,突然遇到了同样的问题。对我来说,似乎添加" ' APP_DIRS':是的,"模板做的伎俩(我通过添加/删除它来切换几次,它工作/失败)。

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