如何在应用程序上显示Django索引页面

时间:2012-10-31 15:53:01

标签: python django

我正在做Django教程,第3部分:https://docs.djangoproject.com/en/dev/intro/tutorial03/

我目前在views.py中有这个文字:

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)

当我去的时候这是有效的: http://localhost:8000/polls/,它显示记录

问题是当我采取下一步并将views.py更改为:

from django.shortcuts import render

from polls.models import Poll

def index(request):
    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
    context = {'latest_poll_list': latest_poll_list}
    return render(request, 'polls/index.html', context)

http://localhost:8000/polls/它显示以下错误: 在/ polls /上的TemplateDoesNotExist 从http://localhost:8000/polls/index.html开始显示以下错误: 找不到页面(404)

我的mysite / urls.py设置为:

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

我将poll / views.py设置为:

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),

我的TEMPLATE_DIRS设置为:

'/path/to/mysite/templates'

为什么页面不会加载新代码?

2 个答案:

答案 0 :(得分:0)

您不会显示整个TEMPLATE_DIRS设置。但我怀疑你有这个:

TEMPLATE_DIRS = (
    '/path/to/mysite/templates'
)

当你真的应该这样做时:

TEMPLATE_DIRS = (
    '/path/to/mysite/templates',
)

请注意字符串结尾后的额外逗号。 Python中的单元素元组需要逗号 - 否则,它只是括号中的一个字符串。

答案 1 :(得分:0)

在templates目录中创建一个名为polls的文件夹,并在其中创建一个index.html文件,其中包含以下内容。

<html>
<body>
<ul>
{% for p in latest_poll_list %}
<li>{{ p.question }}</li>
{% endfor %}
</ul>
</body>
</html>