1

我收到以下消息。我有点明白我的项目服务器找不到模板。但是,我不知道它到底在抱怨什么模板。很高兴听到对正在发生的事情的替代解释。

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/polls/1/

Django Version: 1.4
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'polls',
 'django.contrib.admin')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')

Template Loader Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/home/stanley/mytemplates/polls/detail.html, polls/poll_detail.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
/usr/local/lib/python2.7/dist-packages/django/contrib/auth/templates/polls/detail.html, polls/poll_detail.html (File does not exist)
/usr/local/lib/python2.7/dist-packages/django/contrib/admin/templates/polls/detail.html, polls/poll_detail.html (File does not exist)



Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  136.                     response = response.render()
File "/usr/local/lib/python2.7/dist-packages/django/template/response.py" in render
  104.             self._set_content(self.rendered_content)
File "/usr/local/lib/python2.7/dist-packages/django/template/response.py" in rendered_content
  79.         template = self.resolve_template(self.template_name)
File "/usr/local/lib/python2.7/dist-packages/django/template/response.py" in resolve_template
  55.             return loader.select_template(template)
File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py" in select_template
  193.     raise TemplateDoesNotExist(', '.join(not_found))

Exception Type: TemplateDoesNotExist at /polls/1/
Exception Value: polls/detail.html, polls/poll_detail.html
4

3 回答 3

3

我将尝试更深入地回答这个问题,尤其是对您的陈述“我认为我将模板放在错误的位置”作出反应。这可以使用您发布的回溯轻松解决。

它告诉你的第一件事是关于你的环境的一些东西——你可以简单地忽略它。这对于 TemplateLoaderError 没有用处。如果您的任何应用程序需要特殊版本的 Python 或类似的东西,这可能很重要。

接下来要发现的是发生了什么样的错误,这对您的特殊情况非常有帮助:

Template Loader Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/home/stanley/mytemplates/polls/detail.html, polls/poll_detail.html (File does not exist)

如果你仔细看看这个,它会告诉你 Django 在哪里试图找到指定的模板,以及它在寻找它们时发生了什么(文件不存在)。这将帮助你找到一个解决方案来检查你是否真的把你的模板放在了错误的地方(这种情况经常发生,即使对于更有经验的 Django 开发人员也是如此)。

下一部分是回溯。在您的情况下,您可以直接忽略它,因为您的项目文件夹中不涉及任何文件。如果是这样,那意味着您可能搞砸了命名文件中的某些内容,并且 Django 甚至会告诉您您的代码在哪一行(可能)引发了异常。

最后一部分是有关已引发异常的信息,在您的情况下为 TemplateDoesNotExist。Django 有一些特殊的例外情况,您可以在此处找到。除了这些 Django 引发了标准的 Python 异常。

希望我没有告诉你太多你已经知道的。

于 2012-05-31T09:31:29.807 回答
0

你的设置里有这样的东西吗?

PROJECT_ROOT = path.dirname(path.abspath(__file__)) #gets directory settings is in

TEMPLATE_DIRS = (
    PROJECT_ROOT+'/templates',
)
于 2012-05-31T08:04:28.837 回答
0

您可能在 settings.py 文件中的 TEMPLATE_DIRS 元组中指定了一些路径。Django 仅在这些目录中搜索 html 模板。因此,将以下路径添加到您的 TEMPLATE_DIRS。

TEMPLATE_DIRS = ('/polls',)
于 2012-05-31T08:09:57.517 回答