Feed Reader Inclusion Tag

 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}

Comments

scottj (on July 12, 2007):

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

#

baumer1122 (on August 24, 2007):

Now with caching: http://www.djangosnippets.org/snippets/384/

#

erikcw (on March 25, 2008):

Why not use django's built in template fragment caching?

{% load cache %}
{% cache 1800 feed  %}
    {% pull_feed 'http://www.djangosnippets.org/feeds/latest/' 3 %}
{% endcache %}

http://www.djangoproject.com/documentation/cache/#template-fragment-caching

#

bram (on July 31, 2008):

this one loads data into a template variable you can use afterwards: http://www.djangosnippets.org/snippets/852/

#

jz (on May 23, 2009):

you didn't add the imports

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

#

(Forgotten your password?)

You may use Markdown syntax here, but raw HTML will be removed.