我是Django的新手,无法弄清楚模板的路径应该是什么样子。我的项目目录树如下所示:
blog
blog/blog
blog/blog/__init__.pyc
blog/blog/wsgi.pyc
blog/blog/urls.py
blog/blog/urls.pyc
blog/blog/wsgi.py
blog/blog/__init__.py
blog/blog/settings.py
blog/blog/settings.pyc
blog/home
blog/home/views.py
blog/home/templates
blog/home/templates/home
blog/home/templates/home/main.html
blog/home/__init__.pyc
blog/home/urls.py
blog/home/urls.pyc
blog/home/models.py
blog/home/tests.py
blog/home/__init__.py
blog/home/views.pyc
blog/manage.py
以下是我的观点(来自blog/home/view.py
):
from django.shortcuts import render_to_response
def home(request):
return render_to_response("home/main.html", {"name" : "maxwell"})
我可以在此处找到我的settings.py文件的编辑副本:http://pastebin.com/UMTepK9j
最后,这是我浏览127.0.0.1:8000
时出现的错误:
TemplateDoesNotExist at /home/main.html
有人可以告诉我在拨打render_to_response
时应该看到的路径是什么吗?
答案 0 :(得分:1)
settings.py中的TEMPLATE_DIRS
应指向template
文件夹。
应该是这样的:
TEMPLATE_DIRS = (
'../home/templates'
)
这应该有效。
注意:您使用的是不推荐使用的相对路径。你应该在settings.py
:
import os
settings_dir = os.path.dirname(__file__)
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir))
...
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, '../home/templates/'),
)
此外,您在调用render_to_response
时未传递RequestContext
。有了这个,您的模板将缺少一些对您的项目很重要的变量,如user
。最好这样称呼它:
return render_to_response(
"home/main.html",
context_instance=RequestContext(
request,
{'name':'maxwell'}
)
)