Login

Feed Reader Inclusion Tag

Author:
baumer1122
Posted:
July 12, 2007
Language:
Python
Version:
.96
Tags:
feed rss inclusion-tag
Score:
5 (after 5 ratings)

This is an inclusion tag that can be used to pull in posts from any feed to a template. It doesn't do any caching, so it may slow down page load times. Depends on Feedparser.

Template usage: {% pull_feed 'http://www.djangosnippets.org/feeds/latest/' 3 %}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
@register.inclusion_tag('my_template.html')
def pull_feed(feed_url, posts_to_show=5):
	feed = feedparser.parse(feed_url)
	posts = []
	for i in range(posts_to_show):
		pub_date = feed['entries'][i].updated_parsed
		published = datetime.date(pub_date[0], pub_date[1], pub_date[2] )
		posts.append({
			'title': feed['entries'][i].title,
			'summary': feed['entries'][i].summary,
			'link': feed['entries'][i].link,
			'date': published,
			})
	return {'posts': posts}

More like this

  1. Feed Reader Inclusion Tag with Caching by baumer1122 7 years, 11 months ago
  2. escapejs block tag by baumer1122 7 years, 5 months ago
  3. Parsed RSS into template var by bram 7 years ago
  4. RSS feed authentication by rileycrane 6 years ago
  5. Filter by first letter inclusion tag by slafs 5 years, 2 months ago

Comments

scottj (on July 12, 2007):

Add in some caching, and this is a winner. :)

#

jz (on May 23, 2009):

you didn't add the imports

import feedparser #feedparser.org
import datetime
from django import template
register = template.Library()

#

danieltellez (on May 22, 2011):

To avoid crash on empty or broken feeds:

if len(feed['entries']) < posts_to_show:
      posts_to_show = len(feed['entries'])

#

Please login first before commenting.