syndication-view is a refactor of Django's syndication contrib app, primarily to turn feeds into class-based views, but also fixes a number of long standing tickets.
As of revision 12338, syndication-view is a part of Django and is included in version 1.2. This repository is maintained as a backport for Django 1.1.x.
$ python setup.py install
from syndication.views import Feed from articles.models import Article, Category class ArticleFeed(Feed): title = "example.com news" link = "/sitenews/" description = "Latest news from example.com." def items(self): return Article.objects.all()[:15] class CategoryArticleFeed(ArticleFeed): def title(self, obj): return 'example.com: %s' % obj def get_object(self, request, slug): return Category.objects.get(slug=slug) def items(self, obj): return Article.objects.filter(category=obj)[:15]
from articles.feeds import ArticleFeed, CategoryArticleFeed urlpatterns = patterns('', # ... (r'^articles/feed/$', ArticleFeed()), (r'^articles/feed/(?P<slug>[a-z0-9\-]+)/$', CategoryArticleFeed()), # ... )
The API for the feed object in syndication.views is almost identical to that in Django's contrib app, except get_object() takes the request and any arguments passed to it from the URL rather than the "bits".