0

我在这个https://docs.djangoproject.com/en/1.5/intro/tutorial03/站点的第三个教程上。我被困在我们为我们的视图加载模板的地方Write views that actually do something

第一个代码工作正常(因为没有模板加载):

 from django.http import HttpResponse

 from polls.models import Poll

 def index(request):
     latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
     output = ', '.join([p.question for p in latest_poll_list])
     return HttpResponse(output)

但是当我用下面的代码加载模板时,它显示的结果与上面相同(即没有模板)

from django.http import HttpResponse
from django.template import Context, loader
from polls.models import Poll
def index(request):
    latest_poll_list = Poll.objects.order_by('-pub_date')[:5]

    template = loader.get_template('polls/index.html')

    context = Context({
        'latest_poll_list': latest_poll_list,
    })

    return HttpResponse(template.render(context))

模板用途是:

{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
    <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}

模板位于 polls/template/polls/index.html 中,其中 polls 是我的应用程序(如教程中所用)
PS:直到教程中的这一点,我一直遵循所有内容。

4

1 回答 1

0

正如您在Django 文档中所见,django.template.loaders.app_directories.Loader在 app 目录中名为templates的目录中查找模板文件。

您说您的模板在“polls/template/polls/index.html”中,但它应该在“polls/templates/polls/index.html”中(注意模板中添加的s)。

于 2014-01-27T16:54:07.803 回答