Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Entradas sobre "contrib":

Crear feeds con Django

Crear feeds con Django es realmente sencillo gracias al framework de sindicación que incluye en django.contrib.syndication. Vamos a ver cómo crear un feed para un modelo de nuestra aplicación de una forma sencilla.

Partimos de una aplicación blog con un modelo Entrada a partir del cual vamos a crear el feed con todas las entradas del blog:

class Entrada(models.Model):
    titulo = models.CharField(max_length=250)
    autor = models.ForeignKey(User, related_name="entradas_blog")
    fecha_pub = models.DateTimeField()
    cuerpo = models.TextField()

Lo primero que haremos será crear un archivo feeds.py dentro de la carpeta de nuestro proyecto. En feeds.py creamos un modelo de feed como el siguiente:

from django.contrib.syndication.feeds import Feed
from mi_proyecto.blog.models import Entrada

class EntradaFeed(Feed):
    # atributos básicos del feed
    title='Mi Blog'
    link='http://www.mi_proyecto.com/blog/'
    description='Descripción de la temática del blog.'

    def items(self):
        # elementos del feed
        return Entrada.objects.all()

    def item_pubdate(self,item):
        # fecha de publicación utilizada para cada elemento del feed
        return item.fecha_pub

    def item_author_name(self, item):
        # nombre del autor de cada elemento del feed
        return '%s %s' % (item.autor.first_name, item.autor.last_name)

En la documentación de Django encontrarás una referencia de todos los posibles atributos y métodos de la clase Feed. Una vez creado nuestro modelo de feed tenemos que activar el framework de sindicación añadiendo una entrada a nuestros urlpatterns de urls.py que defina la URL base para el sistema de feeds:

(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}),

Como puedes observar la url base es /feeds/ que mapeamos a la vista django.contrib.syndication.views.feed indicándole el diccionario en el que vamos a incluir todos los feeds que queramos mediante el parámetro feed_dict. En este caso nuestro diccionario será feeds. Tenemos que crear este diccionario con los feeds que queramos incluir:

from django.conf.urls.defaults import *
from mi_proyecto.blog.feeds import EntradaFeed

feeds = {
    'blog': EntradaFeed,
}

urlpatterns = patterns('',
    # ...
    (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}),
    # ...
)

El sistema de feeds utilizará el slug que definamos (en este caso 'blog') para generar la URL del feed correspondiente. Ahora podemos acceder al feed de entradas del blog desde la url http://mi_proyecto.com/feeds/blog/.

Publicado por Antonio Melé el Sábado 29 d Noviembre d 2008 | 0 comentarios | Categorías: contrib, feeds