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

Comments

scottj (on July 12, 2007):
<p>Add in some caching, and this is a winner. :)</p>

#

jz (on May 23, 2009):
<p>you didn't add the imports</p> <pre>import feedparser #feedparser.org import datetime from django import template register = template.Library() </pre>

#

danieltellez (on May 22, 2011):
<p>To avoid crash on empty or broken feeds:</p> <pre>if len(feed['entries']) < posts_to_show: posts_to_show = len(feed['entries']) </pre>

#

Please login first before commenting.