Django Generic Views на основе даты URLconf

Пытаюсь научить себя Джанго, но сталкиваюсь с проблемой. Общие представления кажутся отличной идеей, но я лично иногда нахожу документацию немного загадочной (может быть, я чопорный). Итак, я пытался использовать представления дженериков на основе даты в ArchieveIndexView и, в частности, в них.

Я даже пытался следовать некоторым примерам, не относящимся к djangoproject.com, и у меня все еще есть проблемы. Я использовал пример, представленный на этом сайте.

Вот мой текущий project/urls.py.
Я тоже сейчас нахожусь, не беспокоясь о сопоставлении с образцом, просто пытаюсь заставить его работать.

from django.conf.urls import patterns, include, url
from django.views.generic.dates import ArchiveIndexView
from blog.models import Entry

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', ArchiveIndexView.as_view('date_field': 'pub_date', 'queryset': Entry.objects.all())),

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    url(r'^admin/', include(admin.site.urls)),
)

С этой настройкой я продолжаю получать ошибку Invalid Syntax в строке, описывающей класс ArchiveIndexView. Если я закомментирую эту строку, проблема исчезнет. Если я отделяю URL-адреса от соответствующего приложения, я получаю ту же ошибку.

Ошибка предполагает, что у меня просто что-то не на месте, запятая или что-то в этом роде, но я еще не решил, что это такое.

Спасибо!


person RomaH    schedule 05.06.2012    source источник


Ответы (2)


используйте приведенный ниже код

from django.conf.urls import patterns, include, url
from django.views.generic.dates import ArchiveIndexView
from blog.models import Entry

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', ArchiveIndexView.as_view({'date_field': 'pub_date', 'queryset': Entry.objects.all()})),

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    url(r'^admin/', include(admin.site.urls)),
)

Кажется, вы забыли фигурную скобку {}, необходимую для dict в url(r'^$', ArchiveIndexView.as_view('date_field': 'pub_date', 'queryset': Entry.objects.all())), line.

person shiva    schedule 05.06.2012

Ах. Я решил свой вопрос благодаря небольшому толчку Шивы.

Словарь работает, но только для аргумента extra_content. Это было просто сделано на веб-сайте, который я пытался скопировать, и для дополнительного контента в документации, поэтому я продолжал упускать из виду эту явно очевидную проблему.

from django.conf.urls import patterns, include, url
from django.views.generic.dates import ArchiveIndexView
from blog.models import Entry

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', ArchiveIndexView.as_view(date_field='pub_date', queryset=Entry.objects.all())),

    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    url(r'^admin/', include(admin.site.urls)),
)

Просто надо было на нем поспать...

person RomaH    schedule 05.06.2012