Инфраструктура синдикации Django: Как использовать новые представления каналов на основе классов?
Django 1.2 внес некоторые изменения в структуру синдикации. В соответствии с этим я теперь должен быть в состоянии сделать что-то вроде:
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 ответ
Решение
Хорошо, нашел виновника!:) В моем feeds.py у меня было:
from django.contrib.syndication.feeds import Feed
И я должен был иметь:
from django.contrib.syndication.views import Feed
Модуль django.contrib.syndication.feeds существует только для обратной совместимости.