Джанго учебник. 404 на общих взглядах - PullRequest
0 голосов
/ 22 сентября 2011

Обновление: использование Django 1.2.1 и Python 2.5.2, предлагаемых Dreamhost.

У меня проблемы с последней частью учебника по Django, в которой urls.py изменен для использования общих представлений,После того, как я изменил код, я получил 404 на страницах, и даже индекс перестал работать.

Я просмотрел все свои шаблоны, чтобы увидеть, не в этом ли проблема, но я удалил любой экземпляр опроса и заменил его наобъект.Я также прикрепил шаблон для index / object_list.

Я запускаю его на Dreamhost, и статические URL-адреса, которые я установил для представлений, работали нормально.

urls.py

from brsplash.models import Poll
from django.conf.urls.defaults import *
from django.contrib import admin
from django.views.generic import *
admin.autodiscover()

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='brsplash/results.html'), 'poll_results'),
    (r'^(?P<poll_id>\d+)/vote/$', 'brsplash.views.vote'),
)    

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

poll_list.html

    {% if object_list %}
    <ul>
    {% for object in object_list %}
        <li><a href="{{ object.id }}/">{{ object.question }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available</p>
{% endif %}

Ответы [ 2 ]

4 голосов
/ 22 сентября 2011

Django 1.3 представил общие представления на основе классов, которые заменят этот функциональный подход (см. Примечание вверху страницы документации ), поэтому, возможно, лучше использовать их вместо этого.

При использовании подхода, основанного на классах, ваш новый URL-адрес страницы сведений будет выглядеть примерно так:

from brsplash.models import Poll
...
from django.views.generic import ListView

urlpatterns = {'',
    url(r'^$', ListView.as_view(model=Poll)),
    ...
}

Этот подход можно найти в части 4 урока .

N.B .: Я склонен не передавать аргумент template_name as_view, потому что, как указано в документации:

Общее представление ListView использует шаблон по умолчанию, который называется <имя приложения> / <имя модели> _list.html
1 голос
/ 29 сентября 2011

Вы можете перейти на Django 1.3 на Dreamhost: blog.oscarcp.com /? P = 167 - jturnbull 22 сентября в 9: 54

Это исправленомоя проблема с проблемой urls.py, которую я имел.После того, как я обновил до 1.3.1 и изменил код, чтобы отразить его, мои страницы вернулись.

...