Django模板错误:/ homepage / index.html上的TemplateDoesNotExist

时间:2013-01-04 19:11:39

标签: django

我正在尝试让Django开发服务器加载具有以下设置的模板,但它正在抛出错误

TemplateDoesNotExist at /

homepage/index.html

以下是我为编辑这些文件而编辑的文件

blog / blog / settings.py - (剪切与此问题相关的部分)

import os

TEMPLATE_DIRS = (
os.path.join( os.path.dirname(__file__), 'templates' ),
)

博客/应用/网页/ views.py

from django.shortcuts import render_to_response

def index(request):
    return render_to_response('homepage/index.html')

有关如何解决这个问题的想法吗?

3 个答案:

答案 0 :(得分:2)

默认情况下,Django使用两个模板加载器来定位模板:

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

首先,文件系统加载程序检查TEMPLATE_DIRS中的所有目录,看它是否可以找到命名模板。如果失败,app_directories加载器将在当前应用程序中的/ templates / dir中查找命名模板。这样,您就可以使用可轻松覆盖的可重用应用程序来发布默认模板。

在你的情况下,Django将在这里寻找模板:

blog/blog/templates/homepage/index.html
blog/apps/homepage/templates/homepage/index.html

答案 1 :(得分:1)

您向TEMPLATE_DIRS提供错误的指示。 settings.py文件位于项目blog中的包blog中,但您的templates文件夹位于blog项目中,而不在blog包中。您必须提供项目的绝对目录并加入templates

答案 2 :(得分:0)

在django 1.10中,导航到父项目目录中的path / to / settings.py,查找:

TEMPLATES = [.....]并在DIR:选项

中指定路径/​​到/ project_directory 例如

(在我自己的情况下):

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        '/xampp/htdocs/advisory_portal'
    ],
    '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',
        ],
    },
},
]