Django framework de sindicación: ¿Cómo puedo usar las nuevas vistas de alimentación basados ??en la clase?

StackOverflow https://stackoverflow.com/questions/3174556

Pregunta

Django 1.2 ha traído algunos cambios en el marco de la sindicación. De acuerdo con este , que ahora debe ser capaz de hacer algo como:

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()),
)

Pero cuando trato de hacer cualquier cosa por el estilo, me sale un error:

  

init () toma exactamente 3 argumentos (1 dada)

Puede alguien darme un ejemplo de trabajo? O tal vez alguien entiende lo que se refiere a este error?

Edición # 1

El ejemplo anterior es en realidad desde el enlace de Django Adviento. He probado una variedad de cosas y todas ellas el pico del mismo error. Sin embargo, un simple ejemplo de no trabajo sería:

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())
¿Fue útil?

Solución

Ok, que se encuentra al culpable! :) En mi feeds.py que tenía:

from django.contrib.syndication.feeds import Feed

Y yo debería haber tenido:

from django.contrib.syndication.views import Feed

El módulo django.contrib.syndication.feeds está allí sólo para la compatibilidad hacia atrás, aparentemente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top