Package: django-feedparser
ADjangoapp usingfeedparserto fetch and parse a feed to render it from a template.It is not a Feed agregator since it manage feeds one by one.requestsis used to fetch feeds;feedparseris used to parse feeds;Django cache is used to avoid fetching again the feed each time;Basic feed renderers just parse the feed without modifying anything but you can extend it to implement your post-process formatting;Once the feed has been fetched, it can be displayed through a template. Default template is really basic and you should eventually override it or create another one to fit to your feed structure/format;ADjangoCMSplugin is available oncmsplugin_feedparser;LinksDownload hisPyPi package;Clone it on hisrepository;Requiressix;Django>= 1.4;requests>= 2.7.0’,feedparser>= 5.1.3’,InstallFirst install the package:pip install django-feedparserAdd it to your installed Django apps in settings:INSTALLED_APPS = (
    ...
    'django_feedparser',
    ...
)Then import its settings:from django_feedparser.settings import *And finally see aboutAvailable settingsyou can override.UsageRenderersThere is actually two basic renderer available:basic-xmlJust the basic renderer, parsing an XML feed and return result given byfeedparser.Don’t do any special formatting.basic-jsonLikebasic-xmlbut for a JSON feed, obviously don’t usefeedparserbut
thejsonbuiltin from Python and return the loaded object.Finally, remember than your renderer have to be compatible with the used template and vice-versa.ViewsThere is a mixindjango_feedparser.views.FeedFetchMixinyou can inherit from your views to exploit a feed.And there is a basic viewdjango_feedparser.views.FeedViewthat inherits from mixinFeedFetchMixinto demonstrate its usage. However the basic view is usable as it if it meets your needing, if so you just have to use it directly in your urls likedjango.views.generic.base.TemplateView:from django.conf.urls import *

from .views import FeedView

urlpatterns = patterns('',
    ...
    url(r'^myfeed/$', FeedView.as_view(feed_url="http://localhost/myfeed.xml"), name="myfeed"),
    ...
)NoteAlthough the app contains an ‘urls.py’, it’s mainly intended for debugging purpose, you should not mount it in your project urls.Template tagsMore common way is to use the template tag to include rendered feed in your templates.Basic sample:{% load feedparser_tags %}
{% feedparser_render 'http://localhost/sample.xml' %}Or with all accepted arguments:{% feedparser_render 'http://localhost/sample.xml' renderer='CustomRenderer' template='foo/custom.html' expiration=3600 %}Available settingsFEED_RENDERER_DEFAULT_TEMPLATEPath to the default renderer template.Default value:'django_feedparser/basic_feed_renderer.html'FEED_CACHE_KEYFeed cache key template string.Default value:'feedparser_feed_{id}_{expire}'FEED_TIMEOUTTimeout until feed response, in seconds.Default value:5FEED_BOZO_ACCEPTWether we accept (True) badly formatted xml feed or not (False).Default value:TrueFEED_SAFE_FETCHINGWether fetching a feed throw an exception (False) or not (True).Bad http status, request errors and timeout error are silently catched when safe fetching is enabled.Default value:FalseFEED_RENDER_ENGINESA Python dictionnary for available renderer engines, where the key is the shortcut
engine name and the value is a valid Python path to the renderer class.Default value:{
    'basic-xml': 'django_feedparser.renderer.FeedBasicRenderer',
    'basic-json': 'django_feedparser.renderer.FeedBasicRenderer',
}DEFAULT_FEED_RENDER_ENGINEThe default renderer engine name to use when no one is given.Default value:basic-xml