Официальный учебник Django для начинающего, абсолютно провалился! - PullRequest
2 голосов
/ 28 июня 2009

Не тот уровень отказа действительно. Я только что закончил учебник из 4 частей с сайта djangoproject.com, мое приложение для администрирования работает нормально, а 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, и даже в Google для этой проблемы, но я не смог ничего найти). Почему я получаю это сообщение при входе в http://127.0.0.1:8000/polls?

1 Ответ

13 голосов
/ 28 июня 2009

Вы пропустили этот параграф в 4. части урока:

В предыдущих частях руководства шаблоны были снабжены контекстом, который содержит опрос и переменные контекста latest_poll_list. Однако общие представления предоставляют переменные object и object_list в качестве контекста. Поэтому вам необходимо изменить ваши шаблоны, чтобы они соответствовали новым контекстным переменным. Просмотрите ваши шаблоны и измените любую ссылку на latest_poll_list на object_list и измените любую ссылку на poll на object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...