解释Django Traceback

时间:2012-05-31 07:47:45

标签: django traceback

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

提前致谢!

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

3 个答案:

答案 0 :(得分: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有一些特殊的例外,你可以找到here。除了这些之外,Django还提出了标准的Python异常。

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

答案 1 :(得分:0)

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

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

TEMPLATE_DIRS = (
    PROJECT_ROOT+'/templates',
)

答案 2 :(得分:0)

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

TEMPLATE_DIRS = ('/polls',)