More small tweaks to docs/syndication_feeds.txt

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1197 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2005-11-12 04:00:35 +00:00
parent 782edb393b
commit 91f1b08759
1 changed files with 17 additions and 15 deletions

View File

@ -89,7 +89,7 @@ can live anywhere in your codebase.
A simple example A simple example
---------------- ----------------
This simple example, taken from chicagocrime.org, describes a feed of the This simple example, taken from `chicagocrime.org`_, describes a feed of the
latest five news items:: latest five news items::
from django.contrib.syndication.feeds import Feed from django.contrib.syndication.feeds import Feed
@ -132,8 +132,8 @@ put into those elements.
``{{ site.domain }}`` or ``{{ site.name }}``. ``{{ site.domain }}`` or ``{{ site.name }}``.
If you don't create a template for either the title or description, the If you don't create a template for either the title or description, the
framework will use the template ``{{ obj }}`` by default -- that is, the framework will use the template ``"{{ obj }}"`` by default -- that is,
normal string representation of the object. the normal string representation of the object.
* To specify the contents of ``<link>``, you have two options. For each * To specify the contents of ``<link>``, you have two options. For each
item in ``items()``, Django first tries executing a item in ``items()``, Django first tries executing a
``get_absolute_url()`` method on that object. If that method doesn't ``get_absolute_url()`` method on that object. If that method doesn't
@ -142,6 +142,7 @@ put into those elements.
Both ``get_absolute_url()`` and ``item_link()`` should return the item's Both ``get_absolute_url()`` and ``item_link()`` should return the item's
URL as a normal Python string. URL as a normal Python string.
.. _chicagocrime.org: http://www.chicagocrime.org/
.. _object-relational mapper: http://www.djangoproject.com/documentation/db_api/ .. _object-relational mapper: http://www.djangoproject.com/documentation/db_api/
.. _Django templates: http://www.djangoproject.com/documentation/templates/ .. _Django templates: http://www.djangoproject.com/documentation/templates/
@ -150,18 +151,18 @@ A complex example
The framework also supports more complex feeds, via parameters. The framework also supports more complex feeds, via parameters.
For example, chicagocrime.org offers an RSS feed of recent crimes for every For example, `chicagocrime.org`_ offers an RSS feed of recent crimes for every
police beat in Chicago. It'd be silly to create a separate ``Feed`` class for police beat in Chicago. It'd be silly to create a separate ``Feed`` class for
each police beat; that would violate the `DRY principle`_ and would couple data each police beat; that would violate the `DRY principle`_ and would couple data
to programming logic. Instead, the RSS framework lets you make generic feeds to programming logic. Instead, the syndication framework lets you make generic
that output items based on information in the feed's URL. feeds that output items based on information in the feed's URL.
On chicagocrime.org, the police-beat feeds are accessible via URLs like this: On chicagocrime.org, the police-beat feeds are accessible via URLs like this:
* ``/rss/beats/0613/`` -- Returns recent crimes for beat 0613. * ``/rss/beats/0613/`` -- Returns recent crimes for beat 0613.
* ``/rss/beats/1424/`` -- Returns recent crimes for beat 1424. * ``/rss/beats/1424/`` -- Returns recent crimes for beat 1424.
The slug here is ``beats``. The syndication framework sees the extra URL bits The slug here is ``"beats"``. The syndication framework sees the extra URL bits
after the slug -- ``0613`` and ``1424`` -- and gives you a hook to tell it what after the slug -- ``0613`` and ``1424`` -- and gives you a hook to tell it what
those URL bits mean, and how they should influence which items get published in those URL bits mean, and how they should influence which items get published in
the feed. the feed.
@ -207,8 +208,8 @@ request to the URL ``/rss/beats/0613/``:
subclass of ``ObjectDoesNotExist``. Raising ``ObjectDoesNotExist`` in subclass of ``ObjectDoesNotExist``. Raising ``ObjectDoesNotExist`` in
``get_object()`` tells Django to produce a 404 error for that request. ``get_object()`` tells Django to produce a 404 error for that request.
* To generate the feed's ``<title>``, ``<link>`` and ``<description>``, * To generate the feed's ``<title>``, ``<link>`` and ``<description>``,
Django uses the ``title``, ``link`` and ``description`` methods. In the Django uses the ``title()``, ``link()`` and ``description()`` methods. In
previous example, they were simple string class attributes, but this the previous example, they were simple string class attributes, but this
example illustrates that they can be either strings *or* methods. For example illustrates that they can be either strings *or* methods. For
each of ``title``, ``link`` and ``description``, Django follows this each of ``title``, ``link`` and ``description``, Django follows this
algorithm: algorithm:
@ -242,7 +243,7 @@ To change that, add a ``feed_type`` attribute to your ``Feed`` class, like so::
Note that you set ``feed_type`` to a class object, not an instance. Note that you set ``feed_type`` to a class object, not an instance.
Currently available feed types are:: Currently available feed types are:
* ``django.utils.feedgenerator.Rss201rev2Feed`` (RSS 2.01. Default.) * ``django.utils.feedgenerator.Rss201rev2Feed`` (RSS 2.01. Default.)
* ``django.utils.feedgenerator.RssUserland091Feed`` (RSS 0.91.) * ``django.utils.feedgenerator.RssUserland091Feed`` (RSS 0.91.)
@ -499,8 +500,8 @@ several subclasses:
Each of these three classes knows how to render a certain type of feed as XML. Each of these three classes knows how to render a certain type of feed as XML.
They share this interface: They share this interface:
``__init__(title, link, description, language=None, author_email=None, ``__init__(title, link, description, language=None, author_email=None,``
author_name=None, author_link=None, subtitle=None, categories=None)`` ``author_name=None, author_link=None, subtitle=None, categories=None)``
Initializes the feed with the given metadata, which applies to the entire feed Initializes the feed with the given metadata, which applies to the entire feed
(i.e., not just to a specific item in the feed). (i.e., not just to a specific item in the feed).
@ -508,13 +509,13 @@ Initializes the feed with the given metadata, which applies to the entire feed
All parameters, if given, should be Unicode objects, except ``categories``, All parameters, if given, should be Unicode objects, except ``categories``,
which should be a sequence of Unicode objects. which should be a sequence of Unicode objects.
``add_item(title, link, description, author_email=None, author_name=None, ``add_item(title, link, description, author_email=None, author_name=None,``
pubdate=None, comments=None, unique_id=None, enclosure=None, categories=())`` ``pubdate=None, comments=None, unique_id=None, enclosure=None, categories=())``
Add an item to the feed with the given parameters. All parameters, if given, Add an item to the feed with the given parameters. All parameters, if given,
should be Unicode objects, except: should be Unicode objects, except:
* ``pubdate`` should be a Python datetime object. * ``pubdate`` should be a `Python datetime object`_.
* ``enclosure`` should be an instance of ``feedgenerator.Enclosure``. * ``enclosure`` should be an instance of ``feedgenerator.Enclosure``.
* ``categories`` should be a sequence of Unicode objects. * ``categories`` should be a sequence of Unicode objects.
@ -550,3 +551,4 @@ This example creates an Atom 1.0 feed and prints it to standard output::
</entry></feed> </entry></feed>
.. _django/utils/feedgenerator.py: http://code.djangoproject.com/browser/django/trunk/django/utils/feedgenerator.py .. _django/utils/feedgenerator.py: http://code.djangoproject.com/browser/django/trunk/django/utils/feedgenerator.py
.. _Python datetime object: http://www.python.org/doc/current/lib/module-datetime.html