我的本地机器运行Python 2.5和Ubuntu 8.10上的Nginx, Django是根据最新的开发主干构建的。

对于我请求的每个URL,它抛出:

TemplateDoesNotExist at /appname/path appname/template_name.html Django尝试加载这些模板,顺序如下: 使用loader django.template.loaders. filessystem .function: 使用loader django.template.loaders.app_directories.function: TEMPLATE_DIRS (“/ usr / lib / python2.5 /网站/ projectname /模板”,)

在这种情况下,它是否在寻找/usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html ?奇怪的是这个文件确实存在于磁盘上。为什么Django找不到它?

我在Ubuntu 9.04上使用Python 2.6在远程服务器上运行相同的应用程序,没有出现这样的问题。其他设置相同。

在我的本地机器上是否有任何配置错误的地方,或者是什么可能导致了这样的错误,我应该调查一下?

在我的settings.py中,我指定了:

SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
    os.path.join(SETTINGS_PATH, 'templates'),
)

它应该寻找以下文件:

/usr/lib/python2.5/site-packages projectname /模板/ appname1 / template1.html /usr/lib/python2.5/site-packages projectname /模板/ appname1 / template2.html /usr/lib/python2.5/site-packages projectname /模板/ appname2 / template3.html ...

以上所有文件都存在于磁盘上。

解决了

在我尝试之后,它现在工作了:

chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*

这是奇怪的。我不需要在远程服务器上执行此操作即可使其工作。


当前回答

Django被配置为使用project_name/app_name/templates/app_name/template.html中的模板来渲染(request, 'app_name/template.html', context)

如果你得到模板异常,原因是你没有在设置中添加app_name到installed_apps。

我有django 4.1的问题

其他回答

对于django 1.9版本,我添加了

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

一行到settings.py中的Templates块 而且效果很好

Django TemplateDoesNotExist错误仅仅意味着框架找不到模板文件。

要使用模板加载API,您需要告诉框架将模板存储在何处。这样做的地方是在你的设置文件(settings.py)通过TEMPLATE_DIRS设置。默认情况下,它是一个空元组,所以这个设置告诉Django的模板加载机制去哪里寻找模板。

选择一个你想要存储模板的目录,并将其添加到TEMPLATE_DIRS中,例如:

TEMPLATE_DIRS = (
  '/home/django/myproject/templates',
)

将rest_framework添加到INSTALLED_APPS if django rest框架。对于我来说,我没有把它添加到已安装的应用程序中。

INSTALLED_APPS = [
    '..........',,
    'rest_framework',
    '.........',
]

在你的set .py文件中,用这个替换TEMPLATES数组中的DIRS

'DIRS': []

这个

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

但我认为你需要知道的是 你必须创建一个带有名称模板的文件夹,它应该在根路径上,否则你必须改变DIRS值

如果你在从头开始添加应用程序时遇到这个问题。这可能是因为你错过了一些设置。添加应用程序需要三个步骤。

1、创建目录和模板文件。

假设你有一个名为mysite的项目,你想添加一个名为your_app_name的应用程序。将模板文件放在mysite/your_app_name/templates/your_app_name目录下,如下所示。

├── mysite
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── your_app_name
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── templates
│   │   └── your_app_name
│   │       └── my_index.html
│   ├── urls.py
│   └── views.py

2、添加你的应用到INSTALLED_APPS。

修改settings.py

INSTALLED_APPS = [
    ...
    'your_app_name',
    ...
]

3、将你的应用目录添加到TEMPLATES的DIRS中。

修改settings.py。

添加操作系统导入

import os
TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR, 'templates'),
                 os.path.join(BASE_DIR, 'your_app_name', 'templates', 'your_app_name'),
                ...
                ]
    }
]