Django绝对是初学者的官方教程,绝对失败了!

时间:2009-06-28 07:59:11

标签: python django

确实没有那种程度的失败。我刚从djangoproject.com完成了4部分教程,我的管理应用程序工作正常,我的入口点url(/ polls /)运行良好,除了我得到这个http响应:

没有民意调查。

即使数据库有一个注册表。使用管理员应用程序输入,该条目显示应该的方式。

在本教程结束时,您可以通过将其替换为URLconf上的通用视图来更改所有硬编码视图。在经过所有修改之后,你的urls.py就像这样结束:

from django.conf.urls.defaults import *
from mysite.polls.models import Poll

info_dict = {
    'queryset': Poll.objects.all(),
}

urlpatterns = patterns('',
    (r'^$', 'django.views.generic.list_detail.object_list', info_dict),
    (r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
    url(r'^(?P<object_id>\d+)/results/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, template_name='polls/results.html'), 'poll_results'),
    (r'^(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'),
)

使用这些通用视图,复制/粘贴我的views.py文件毫无意义,我只会提到只有一个投票功能(因为django通用视图可以完成所有的魔术)。我的假设是urls.py文件需要一些调整,或者在某些方面是错误的。为了发送“没有民意调查可用”。在/ polls / url输出。我的poll_list.html文件如下所示:

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

它将latest_poll_list变为false,这就是执行else块的原因。

你能帮我一把吗? (我在stackoverflow上搜索了重复的问题,甚至在谷歌搜索这个问题,但我找不到任何东西)。 当我输入http://127.0.0.1:8000/polls时,为什么会收到此消息?

1 个答案:

答案 0 :(得分:13)

您在本教程的第4部分中忽略了这一段:

  

在本教程的前几部分中,模板提供了一个包含poll和latest_poll_list上下文变量的上下文。但是,通用视图提供变量objectobject_list作为上下文。因此,您需要更改模板以匹配新的上下文变量。浏览模板,修改对latest_poll_listobject_list的任何引用,并将对poll的任何引用更改为object