确实没有那种程度的失败。我刚从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时,为什么会收到此消息?
答案 0 :(得分:13)
您在本教程的第4部分中忽略了这一段:
在本教程的前几部分中,模板提供了一个包含poll和
latest_poll_list
上下文变量的上下文。但是,通用视图提供变量object
和object_list
作为上下文。因此,您需要更改模板以匹配新的上下文变量。浏览模板,修改对latest_poll_list
至object_list
的任何引用,并将对poll
的任何引用更改为object
。