Django:奇怪的TemplateDoesNotExist错误

时间:2014-04-12 23:11:31

标签: python django templates django-templates

我在Django 1.6.2上得到“TemplateDoesNotExist at /”error 。 Stackoverflow多次介绍,但到目前为止没有任何工作。

模板是他们自己文件夹的一部分,不存储在应用程序中。

manage.py
project_dir
|_ settings.py
|_ urls.py
|_ apps
    \_ app1
        \_ views.py
        |_ urls.py
        |_ models.py
|_ templates
    \_ base.html
    \_ pages
         \_ index.html

我已将TEMPLATE_DIRTEMPLATE_LOADERS设置如下:

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(os.path.join(BASE_DIR, 'project/apps/'))
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'project/templates/'),
)
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

当我打印文件夹TEMPLATE_DIRSBASE_DIR时,它们完全没问题。 当我复制TEMPLATE_DIRS的打印输出并直接在浏览器中查看时,我可以查看该模板。

我注意到一个奇怪的事情是加载程序django.template.loaders.filesystem.Loader没有列出错误消息中的任何文件夹。 django.template.loaders.app_directories.Loader列出了与应用相关的一些文件夹。

通过urls.py

调用模板
from django.views.generic.base import TemplateView
...
urlpatterns = patterns('',
    url(r'^$', TemplateView.as_view(template_name='app1/index.html'), name='index'),
    ...
) 

模板错误的原因是什么?

3 个答案:

答案 0 :(得分:3)

我无法看到任何" app1 / index.html"在文件结构中。

根据提供的内容,它应该是

url(r'^$', TemplateView.as_view(template_name='pages/index.html'), name='index'),

答案 1 :(得分:0)

你可以添加一些东西吗?我想查看整个目录设置,包括settings.py的位置。我担心你的BASE_DIRTEMPLATE_DIRS错了。我认为TEMPLATE_DIRS只是'templates'而不是'project/templates',但它可以用于您的设置。

如果不是这样,您可以发布views.py和您要拨打的模板代码吗?

答案 2 :(得分:0)

哦,男孩,错误是可悲的!我再次重新阅读settings.py,发现TEMPLATE_DIRS有第二个定义。这覆盖了所有设置的目录,也解释了django.template.loaders.app_directories.Loader为空的原因。