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}

More like this

  1. Feed Reader Inclusion Tag with Caching by baumer1122 5 years, 9 months ago
  2. Parsed RSS into template var by bram 4 years, 10 months ago
  3. escapejs block tag by baumer1122 5 years, 2 months ago
  4. Template-Filter for Feedparser-Dates by kioopi 3 years, 11 months ago
  5. Deli.cio.us rss template tag by aaloy 4 years, 1 month ago

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()

#

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'])

#

(Forgotten your password?)