Search code examples
djangomodelrssslug

Django RSS Feed - Slug Isn't Registered


I'm trying to set up a very simple RSS Feed. I've followed the docs, read blog posts, searched this site for similar questions etc but I'm still stuck...

In Model.py

class Events(models.Model):
  title = models.CharField(max_length=50)
  date = models.DateField(max_length=10)

  def __unicode__(self):
      return self.title

In feeds.py

class UpcomingEventsFeed(Feed):
  title = "Upcoming events for ChristChurch School"
  link = "/"
  description = "Information taken from the ChristChurch school website"

  def items(self):
    return Events.objects.order_by('-date')[:10]

urls.py

feeds = {
  'events': UpcomingEventsFeed,
  }

url.py

(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}),
(r'^feeds/events/$', UpcomingEventsFeed()),

But when I go to /feeds/events/ I get a

Slug u'events' isn't registered.

This blogpost goes into more depth that the docs and suggests that the feeds dictionary isn't synced with my url but I can't see the problem?

Then the other thing that could be an issue is the slug? I've read what a slug is but what do I need to do with it? Do I need to put something in my model like get_absolute_url()?

Appologies if it's a glaring error but I'm a newcomer to the framework and progrmaming in general. Thanks


Solution

  • Give your class Events a get_absotule_url method. This will save you trouble for links in the feed view. Try to set up your urls.py like this:

    from your.path.to.feed import UpcomingEventsFeed
    #...
    (r'^feeds/events/$', UpcomingEventsFeed()),
    #...
    

    Dont use this line: (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}), it will intercept the call to the second line and throw the error. I hope this helps.