Source

django-template-utils / docs / feeds.txt

The default branch has multiple heads

============================
Parsing and displaying feeds
============================


Retrieving content from an RSS or Atom feed and displaying it in a
page is a fairly common need; many sites, for example, syndicate
content from affiliates or partners, and simply parse a feed to obtain
data which is then displayed in a sidebar as "latest headlines" or
similar.

To facilitate this, ``template_utils`` includes a template tag library
for parsing and displaying RSS and Atom feeds. To use these tags,
you'll need to have ``template_utils`` in your ``INSTALLED_APPS``
list, and you'll need to have ``{% load feeds %}`` in your template.


``include_feed``
================

Parse an RSS or Atom feed and render a given number of its items
into HTML.

It is **highly** recommended that you use `Django's template
fragment caching`_ to cache the output of this tag for a
reasonable amount of time (e.g., one hour); polling a feed too
often is impolite, wastes bandwidth and may lead to the feed
provider banning your IP address.

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

Arguments should be:

1. The URL of the feed to parse.

2. The number of items to render (if not supplied, renders all
   items in the feed).
   
3. The name of a template to use for rendering the results into HTML.

The template used to render the results will receive two variables:

``items``
    A list of dictionaries representing feed items, each with 'title',
    'summary', 'link' and 'date' members.

``feed``
    The feed itself, for pulling out arbitrary attributes.

Requires the Universal Feed Parser, which can be obtained at
http://feedparser.org/. See `its documentation`_ for details of the
parsed feed object.

.. _its documentation: http://feedparser.org/docs/

Syntax::

    {% include_feed [feed_url] [num_items] [template_name] %}

Example::

    {% include_feed "http://www2.ljworld.com/rss/headlines/" 10 feed_includes/ljworld_headlines.html %}


``parse_feed``
==============

Parses a given feed and returns the result in a given context
variable.

It is **highly** recommended that you use `Django's template
fragment caching`_ to cache the output of this tag for a
reasonable amount of time (e.g., one hour); polling a feed too
often is impolite, wastes bandwidth and may lead to the feed
provider banning your IP address.

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

Arguments should be:

1. The URL of the feed to parse.

2. The name of a context variable in which to return the result.

Requires the Universal Feed Parser, which can be obtained at
http://feedparser.org/. See `its documentation`_ for details of the
parsed feed object.

.. _its documentation: http://feedparser.org/docs/

Syntax::

    {% parse_feed [feed_url] as [varname] %}

Example::

    {% parse_feed "http://www2.ljworld.com/rss/headlines/" as ljworld_feed %}