我收到以下消息。我有点明白我的项目服务器找不到模板。但是,我不知道它对模板的抱怨到底是什么。很高兴听到对正在发生的事情的替代解释。
提前致谢!
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
答案 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',)