Login

Feed Reader Inclusion Tag

Author:
baumer1122
Posted:
July 12, 2007
Language:
Python
Version:
.96
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. Template tag - list punctuation for a list of items by shapiromatron 2 months ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 2 months, 1 week ago
  3. Serializer factory with Django Rest Framework by julio 9 months, 1 week ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 9 months, 4 weeks ago
  5. Help text hyperlinks by sa2812 10 months, 3 weeks 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.