我有一个看起来很常见的初学者问题。
我正在处理我的第一个 django 项目,当我设置视图时,出现“TemplateDoesNotExist”错误。我现在花了很多时间在这上面 - 我知道有很多关于它的主题,但到目前为止没有任何帮助。
我希望我可以提供所有需要的信息,以便高级 django 用户可以直接看到我做错了什么。
我正在使用开发服务器。和 windows 7 & sqlite3。
这是我得到的错误:
TemplateDoesNotExist at /skates/
allsk8s.html
Request Method: GET
Request URL: http://127.0.0.1:8000/skates/
Django Version: 1.4.3
Exception Type: TemplateDoesNotExist
在 settings.py 我这样设置 TEMPLATE_DIRS :
TEMPLATE_DIRS = (
r'H:/netz2/skateprojekt/templates/',
)
模板加载器如下所示:
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
这是我的观点:
from django.shortcuts import render_to_response
from django.template import RequestContext
from sk8.models import Sk8
def AllSk8s(request):
skates = Sk8.objects.all().order_by('name')
context = {'skates':skates}
return render_to_response('allsk8s.html', context, context_instance=RequestContext(request))
它应该链接到 allsk8s.html - 看起来确实如此,但找不到该文件,尽管它肯定位于正确的文件夹中。但如您所见:
Template-loader postmortem
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
H:\netz2\skateprojekt\templates\allsk8s.html (File does not exist)
这是我的 urls.py 的一部分
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
(r'^skates/$', 'sk8.views.AllSk8s'),
)
这是系统路径:
H:\netz2\skateproject\templates
并且在模板文件夹中有一个名为 allsk8s.html 的文件,据我所知 - 这应该可以。我真的希望有人能帮助我,因为这是我第二次遇到这样的问题,我无法弄清楚问题所在。
在此先感谢丹尼尔
编辑:
我尝试将此添加到我的 settings.py 中:
import os
DIRNAME = os.path.abspath(os.path.dirname(__file__))
并将我的 TEMPLATE_DIRS 更改为:
TEMPLATE_DIRS = (
os.path.join(DIRNAME, r'H:/netz2/skateprojekt/templates/'),
)
因为我读过它会有所帮助 - 但它仍然返回相同的错误 - 所以我再次将它改回来。;(
编辑:
另外,我检查过,当我输入错误的网址时,它会引发此错误:
Using the URLconf defined in skateproject.urls, Django tried these URL patterns, in this order:
^admin/
^skates/$
所以溜冰鞋的网址应该在那里-但不能“解决”-我不明白:(
编辑:
我今天发现了一些新东西,Template-loader postmortem 说它还会检查这些目录:
Using loader django.template.loaders.app_directories.Loader:
C:\Python27\lib\site-packages\django\contrib\auth\templates\allsk8s.html (File does not exist)
C:\Python27\lib\site-packages\django\contrib\admin\templates\allsk8s.html (File does not exist)
所以我将我的模板文件移到那里并收到一个新错误 - 通过将我的 html 文件从 ansi 转换为 utf8 和 tada 解决了这个问题 - 它有效。不幸的是,我不能让这个文件夹中的模板文件导致它不是项目的一部分。当我将文件移回原始位置时,我又回到了旧错误:(