Django无法加载模板

时间:2013-07-23 03:04:06

标签: python django

我试过这几种方法没有运气。如果我尝试渲染我的观点:

from django.shortcuts import render
from django.template import loader

def index(request):
    render(request, loader.get_template('index.html'))

我收到此错误:

TemplateDoesNotExist at /

如果我将代码更改为:

from django.http import HttpResponse
from django.template.loader import render_to_string

def index(request):
    content = render_to_string('index.html')
    HttpResponse(content)

它实际上找到了模板并呈现它(content被设置为渲染的html)但我现在收到此错误:

ValueError at /
The view home.controller.index didn't return an HttpResponse object.

这是我的文件夹结构和我的设置:

myProject/
    settings.py

    home/
       controller.py
       urls.py
       models.py
       templates/
           home/
               index.html

在我的setting.py文件中,我有:

SITE_ROOT = os.path.dirname(os.path.realpath(__name__))
TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'home/templates/home'), )

INSTALLED_APPS = (
    'django.contrib.sessions',
    'django.contrib.staticfiles',
    'gunicorn',
    'home'
)

我已经为TEMPLATE_DIRS尝试了多种变体,但我想假设我已经添加了home作为我认为的应用程序。有人知道这里发生了什么吗?

更新

解决这个问题的组合。首先需要return语句( doh ),我想我正在混合如何呈现模板的示例。无需导入加载程序或手动渲染它。这就是我实际工作的结果:

from django.shortcuts import render

def index(request):
    return render(request, 'home/index.html')

感谢@lalo和@Rao指出我正确的方向。

2 个答案:

答案 0 :(得分:2)

你没有从你的观点返回任何东西。 return HttpResponse(blah)

答案 1 :(得分:2)

我会尝试:

from django.shortcuts import render

def index(request):
    render(request, 'home/index.html')