Django - templatedoesnotexist

时间:2016-06-04 23:15:36

标签: python django

我创建了一个名为" crepes_bretonnes"的项目。在这个项目中,我有一个应用程序博客。我创建了一个模板date.html。这是我的文件夹的结构:

crepes_bretonnes/
    blog/
        __init__.py
        admin.py
        migrations/
            __init__.py
        models.py
        templates/
            blog/
                addition.html
                date.html
        tests.py
        views.py
    crepes_bretonnes/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    templates/
    db.sqlite3
    manage.py

当我尝试查看该页面时,我有一条消息templateDoesNotExist。我在网上看了很多关于它的内容,但我没有成功解决我的问题。事实上,我不明白为什么Django不会在应用程序博客的模板文件夹中搜索,尽管我写了#34;博客"在INSTALLED_APP中的setting.py中。显然,我已将TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)放入setting.py。我还试图改变字典TEMPLATES。但是,如果我理解得很好,它就没有链接,因为Django即使没有这个也应该找到我的模板。 我没有任何解决方案。

感谢您的帮助。

PS:如果我将date.html放在常规模板文件夹中并且我安排了一些行,它就可以了。然而,这不是一个解决方案,我想尊重一个好的结构。

更新

感谢您的回答。是的,它确实在我的设置中显示INSTALLED_APPSAPP_DIRS已经True

以下是TEMPLATES中的setting.py

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',
            ],
        },
    },
]

更新: 调试消息显示Django在django.template.loaders.app_directories.Loader中搜索:/Users/benjamin/anaconda/lib/python2.7/site-packages/django/contrib/admin/templates/blog/date.html。 但是我没有在这些文件夹中写任何东西......我在Documents中工作。为什么Django在这里搜索而不是在Documents中搜索?

4 个答案:

答案 0 :(得分:0)

我认为'INSTALLED_APP'是一个拼写错误,它在您的设置中确实显示'INSTALLED_APPS'。无论如何,您需要为APP_DIRS = True中的模板设置app/templates  文件夹:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
                 os.path.join(BASE_DIR, 'templates'),
                 ],
        'APP_DIRS': True,  # this line is important
        '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 :(得分:0)

我遇到了一个同样的问题,即说模板不存在,我通过更改views.py中的URL模式来解决它,以前我只提到date.html,后来我用blog / date.html进行了编辑。希望对您有帮助。

答案 2 :(得分:0)

转到您的setting.py,然后尝试尝试以下操作:

os.path.join(BASE_DIR, "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',
        ],
    },
},

]

答案 3 :(得分:0)

我遇到同样的问题, 已将应用添加到INSTALLED_APPS 完成,因为您(和我)没有在主应用程序中使用模板,因此必须将其注册到设置中(例如从主url文件中引用应用程序的url)