【问题标题】:Django official tutorial for the absolute beginner, absolutely failed!绝对初学者的Django官方教程,绝对失败!
【发布时间】:2009-06-28 07:59:10
【问题描述】:

确实没有那么严重的失败。我刚刚完成了 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 块的原因。

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

【问题讨论】:

  • 应该是容易理解的代码吧。当我在程序集/cgi 中做一个 webapp 时,情况还不错:0
  • -1:问题标题:绝对误导,绝对失败。

标签: python django


【解决方案1】:

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

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

【讨论】:

  • 非常感谢。很难熟悉 django 的概念。我对模板 (.html) 和 views.py 感到困惑,我只更改了视图上的上下文变量,但没有更改模板中的上下文变量。
  • 公平地说,Django 教程在第 3 节中说:Load the page by pointing your browser at “/polls/”, and you should see a bulleted-list containing the “What’s up” question from Tutorial 2。那时(教程系列的第三部分),您看不到项目符号列表,尽管它在第三部分中说您可以。正如本杰明在此建议的那样,它仅在第四部分中显示。所以,afaics,教程不是那么清楚。
最近更新 更多