2013-05-01 49 views
0

我是Django的新手,无法弄清楚我的模板路径应该是什么样子。我的项目的目录树是这个样子:我不知道如何从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

我们能否看到您的settings.py? – 2013-05-01 00:04:59

+0

@Jeff编辑过的文章包含指向我的settings.py副本的链接 – 2013-05-01 00:08:06

回答

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'} 
    ) 
) 
相关问题