0

我是 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

4

1 回答 1

1

您的TEMPLATE_DIRSsettings.py 中的 应该指向该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'}
    )
)
于 2013-05-01T00:13:36.487 回答