Инфраструктура синдикации Django: Как использовать новые представления каналов на основе классов? - PullRequest
2 голосов
/ 04 июля 2010

Django 1.2 внес некоторые изменения в структуру синдикации. Согласно this , теперь я должен иметь возможность сделать что-то вроде:

from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory

urlpatterns = patterns('',
    # ...
    (r'^feeds/latest/$', LatestEntries()),
    (r'^feeds/categories/(?P<category_id>\d+)/$', LatestEntriesByCategory()),
)

Но когда я пытаюсь что-то сделать в этом направлении, я получаю сообщение об ошибке:

init () принимает ровно 3 аргумента (1 дано)

Кто-нибудь может дать мне рабочий пример? Или, может быть, кто-то понимает, к чему относится эта ошибка?

Редактировать # 1

Приведенный выше пример на самом деле взят из ссылки на Django Advent. Я пробовал разные вещи, и все они извергают одну и ту же ошибку. Но простой нерабочий пример:

urls.py

urlpatterns = patterns('',
    url(r'^feeds/comments/$', LatestCommentsFeed()),
)

feeds.py

class LatestCommentsFeed(Feed):
    description = "Latest comments left at %s" % current_site.name
    feed_type = Atom1Feed
    link = "/feeds/comments/"
    title = "%s: Latest comments" % current_site.name

    def items(self):
        return Comment.objects.filter(is_public=True).order_by('-submit_date')[:50]

    def item_pubdate(self,item):
        return item.submit_date

    def item_guid(self,item):
        return "tag:%s,%s:%s" % (current_site.domain,
                                 item.submit_date.strftime('%Y-%m-%d'),
                                 item.get_absolute_url())

1 Ответ

1 голос
/ 04 июля 2010

Хорошо, нашел виновника! :) В моем feeds.py у меня было:

from django.contrib.syndication.feeds import Feed

И я должен был иметь:

from django.contrib.syndication.views import Feed

Модуль django.contrib.syndication.feeds предназначен только для обратной совместимости.

...