Django Syndizierung Rahmen: Wie verwende ich die neuen klassenbasierten Feed Ansichten?
-
02-10-2019 - |
Frage
Django 1.2 hat sich in einigen Veränderungen in der Syndizierung Rahmen gebracht. Nach dies ich nun in der Lage sein sollte, wie etwas zu tun:
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()),
)
Aber wenn ich versuche, etwas in diese Richtung zu tun, ich erhalte eine Fehlermeldung:
init () nimmt genau 3 Argumente (1 angegeben)
Kann jemand geben Sie mir ein funktionierendes Beispiel? Oder vielleicht jemand versteht, was dieser Fehler bezieht sich auf?
Edit # 1
Das obige Beispiel ist eigentlich aus dem Django Advent Link. Ich habe eine Vielzahl von Dingen versucht, und alle von ihnen Auslauf der gleichen Fehler. Aber eine einfache, nicht funktionierendes Beispiel wäre:
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())
Lösung
Ok, die Schuldigen gefunden! :) In meinem feeds.py ich hatte:
from django.contrib.syndication.feeds import Feed
Und ich sollte gehabt haben:
from django.contrib.syndication.views import Feed
Das django.contrib.syndication.feeds Modul gibt es nur für die Abwärtskompatibilität offenbar.