<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
	<title>Comunidad española de Django.</title>
	<link>http://django.es/blog/</link>
	<description>Blog de la comunidad española de Django.</description>
	<language>es</language>

	<item>
	<title>Django 1.5 ya está aquí</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/django-15-ya-esta-aqui/</link>
	<guid>http://django.es/blog/django-15-ya-esta-aqui/</guid>
	<pubDate>mié, 27 Feb 2013 11:46:45 +0100</pubDate>
	<description>Se acaba de lanzar Django 1.5. La nueva versión incluye interesantes mejoras decritas en las release notes. Éstos son algunos de los aspectos más destacados:

Django 1.5 introduce soporte para un modelo de usuario configurable. El modelo básico de usuario de Django sigue presente, pero ahora el framework soporta especificar nuestro propio modelo y que el sistema de autenticación de Django la use.

Django 1.5 es la primera versión de Django con soporte para Python 3 (específicamente, Python 3.2 y posteriores). El soporte para Python 3 todavía se considera experimental, pero hay disponible una guía para portar nuestro código a Python 3 y los bugs de compatibilidad con Python 3 se considerarán bloqueantes para futuras versiones...</description>
	</item>

	<item>
	<title>Editar y traducir inline en Django fácilmente</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/editar-y-traducir-inline-en-django-facilmente/</link>
	<guid>http://django.es/blog/editar-y-traducir-inline-en-django-facilmente/</guid>
	<pubDate>mié, 11 Ene 2012 23:02:40 +0100</pubDate>
	<description>Desde Yaco nos traen las aplicaciones pluggables django-inlinetrans y django-inplaceedit que permiten editar traducciones de templates y objetos de nuestros modelos desde el frontend de nuestro proyecto...</description>
	</item>

	<item>
	<title>Vídeo y diapositivas del taller de Introducción a Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/video-y-diapositivas-del-taller-de-introduccion-django/</link>
	<guid>http://django.es/blog/video-y-diapositivas-del-taller-de-introduccion-django/</guid>
	<pubDate>jue, 20 Oct 2011 13:59:33 +0200</pubDate>
	<description>vasdf</description>
	</item>

	<item>
	<title>Utilizar javascript o CSS en el admin de Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/utilizar-javascript-o-css-en-el-admin-de-django/</link>
	<guid>http://django.es/blog/utilizar-javascript-o-css-en-el-admin-de-django/</guid>
	<pubDate>jue, 13 Oct 2011 23:52:33 +0200</pubDate>
	<description>Es realmente sencillo utilizar javascript o CSS propio en el sitio de administración de nuestro proyecto Django. Para ello podemos añadir en nuestros ModelAdmin los archivos JS o CSS que necesitemos utilizando la clase Media en los modelos de administración...</description>
	</item>

	<item>
	<title>Taller de Introducción a Django el 17 octubre en Madrid</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/taller-de-introduccion-django-el-17-octubre-en-madrid/</link>
	<guid>http://django.es/blog/taller-de-introduccion-django-el-17-octubre-en-madrid/</guid>
	<pubDate>jue, 13 Oct 2011 15:14:03 +0200</pubDate>
	<description>El próximo lunes día 17 de Ocubre realizaremos en Madrid un Taller de Introducción a Django de la mano de Betabeers. Está orientado a gente que quiere tener un primer contacto con el framework y que todavía no lo conoce mucho (o nada). Tenéis la información en la sección de formación y en el blog de de Betabeers...</description>
	</item>

	<item>
	<title>Ordenar una query por la longitud de un campo</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/ordenar-una-query-por-la-longitud-de-un-campo/</link>
	<guid>http://django.es/blog/ordenar-una-query-por-la-longitud-de-un-campo/</guid>
	<pubDate>jue, 13 Oct 2011 13:30:17 +0200</pubDate>
	<description>A veces tenemos que hacer queries un poco especiales y necesitamos ayuda de SQL cuando el ORM de Django se nos queda pequeño. Aquí tenemos un ejemplo de cómo ordenar una query a la base de datos por la longitud de un campo...</description>
	</item>

	<item>
	<title>Cómo importar un archivo CSV (ó TSV) en un modelo de django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/como-importar-un-archivo-csv-tsv-en-modelo-de-django/</link>
	<guid>http://django.es/blog/como-importar-un-archivo-csv-tsv-en-modelo-de-django/</guid>
	<pubDate>mié, 12 Oct 2011 16:44:17 +0200</pubDate>
	<description>Mitch Fournier explica en su blog cómo importar datos en formato CSV a un modelo de Django, tal cómo lo ha utilizado en su proyecto Wantbox.com.

Primero creamos un modelo que contenga los mismos campos que el archivo CSV que queramos importar, utilizando el tipo de campo más adecuado para cada uno de ellos dependiendo de si sus valores van a ser cadenas de texto, números, fechas... </description>
	</item>

	<item>
	<title>Lista de países con django-countries</title>
	<author>Sergio Hernández</author>
	<link>http://django.es/blog/lista-de-paises-django-countries/</link>
	<guid>http://django.es/blog/lista-de-paises-django-countries/</guid>
	<pubDate>mar, 26 Abr 2011 09:16:50 +0200</pubDate>
	<description>Es probable que muchos de nuestros lectores se hayan visto en la necesidad de agregar a su sitio/aplicación web una lista de países con sus respectivas ciudades. ¿Esto es posible sin necesidad de emplear mucho tiempo?. La respuesta es SI, gracias a django-countries y la magia de Django es posible hacerlo en forma práctica y elegante, usando el estándar ISO 3166-1 para la representación de países.</description>
	</item>

	<item>
	<title>Entrevista a Daniel Rus de Witmeet</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/witmeet-entrevista-daniel-rus/</link>
	<guid>http://django.es/blog/witmeet-entrevista-daniel-rus/</guid>
	<pubDate>mar, 22 Feb 2011 16:17:41 +0100</pubDate>
	<description>Comenzamos una nueva categoría de artículos en los que iremos descubriendo proyectos creados con Django por la comunidad hispanohablante. Para estrenarla tenemos la suerte de entrevistar a Daniel Rus, creador de Witmeet.

Witmeet es un sitio web que permite buscar personas con las que practicar idiomas cara a cara en cualquier parte del mundo. Una vez te das de alta puedes configurar tu perfil con los idiomas que hablas y los que quieres practicar. Puedes crear tus propios witmeets eligiendo tu disponibilidad y los sitios (cafeterías u otros lugares) donde te apetezca quedar para practicar idiomas, o buscar witmeets cercanos creados por otros usuarios.</description>
	</item>

	<item>
	<title>Renombrar nombres de archivos a ASCII</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/renombrar-nombres-archivos-ascii/</link>
	<guid>http://django.es/blog/renombrar-nombres-archivos-ascii/</guid>
	<pubDate>mié, 16 Feb 2011 14:40:39 +0100</pubDate>
	<description>Los archivos que suben los usuarios a veces tienen nombres con caracteres no ASCII. Hoy en día casí todos los sistemas de archivos permiten encoding UTF-8, pero a veces nos podemos encontrar problemas en sistemas que no tienen UTF-8 activado o al ejecutar scripts sobre los ficheros que esperen un nombre de archivo en ASCII.

Bojan Mihelac ha publicado en su blog una clase de almacenamiento que se basa en FileSystemStorage original añadiéndole la normalización de nombres de archivo a ASCII antes de ser almacenados.</description>
	</item>

	<item>
	<title>Rutas relativas en los settings</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/rutas-relativas-en-settings/</link>
	<guid>http://django.es/blog/rutas-relativas-en-settings/</guid>
	<pubDate>mar, 15 Feb 2011 00:24:21 +0100</pubDate>
	<description>Utilizar rutas relativas en nuestro settings.py en lugar de rutas absolutas permite que el proyecto no dependa del lugar en el que se encuentra en el sistema de archivos. Esto es ideal cuando utilizamos el proyecto en distintos entornos y las rutas absolutas del proyecto son distintas en cada uno de ellos, o si la ruta del proyecto puede variar en algún momento.</description>
	</item>

	<item>
	<title>Traducciones de modelos con django-transmeta</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/traducciones-modelos-django-transmeta/</link>
	<guid>http://django.es/blog/traducciones-modelos-django-transmeta/</guid>
	<pubDate>lun, 14 Feb 2011 10:50:53 +0100</pubDate>
	<description>django-transmeta es una aplicación reusable que nos permite añadir traducciones a los campos de nuestros modelos. Es muy fácil de utilizar ya que crea automáticamente un campo en la base de datos por cada atributo traducible y cada idioma de nuestro setting LANGUAGES.

Así, si tenemos un campo llamado nombre y nuestro setting LANGUAGES son inglés y español django-transmeta creará los campos nombre_es, nombre_en en la base de datos y al acceder directamente a atributo nombre obtendremos la traducción correspondiente al idioma que esté activo en la petición.</description>
	</item>

	<item>
	<title>Utilizar jQuery en el admin de Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/utilizar-jquery-admin-django/</link>
	<guid>http://django.es/blog/utilizar-jquery-admin-django/</guid>
	<pubDate>dom, 13 Feb 2011 21:52:30 +0100</pubDate>
	<description>Al personalizar alguna plantilla del sistema de administración podemos querer usar jQuery. Como el admin de Django ya hace uso de jQuery podemos utilizarlo directamente sin necesidad de incluir la propia librería. Pero enseguida nos daremos cuenta de que no podemos utilizar el alias $ ya que el admin utiliza la opción noConflict de jQuery. El alias que define el sistema de administración para usar jQuery es &quot;django.jQuery&quot;.</description>
	</item>

	<item>
	<title>DjangoCon Europe 2011</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/djangocon-europe-2011/</link>
	<guid>http://django.es/blog/djangocon-europe-2011/</guid>
	<pubDate>lun, 17 Ene 2011 18:49:11 +0100</pubDate>
	<description>Se ha anunciado que la DjangoCon Europe 2011 tendrá lugar en Amsterdam del 6 al 10 de Junio. La conferencia será del día 6 al 8 y los días de sprint el 9 y 10 de Junio. Hay más detalles en la web oficial del evento.</description>
	</item>

	<item>
	<title>Askani crea los modelos de tu aplicación gráficamente</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/askani-modelos-aplicacion-graficamente/</link>
	<guid>http://django.es/blog/askani-modelos-aplicacion-graficamente/</guid>
	<pubDate>sáb, 27 Nov 2010 14:38:17 +0100</pubDate>
	<description>Askani es una interfaz gráfica para generar modelos de Django. Álvaro Mouriño nos cuenta que lleva trabajando algo más de un mes en este proyecto. Askani está desarrollado en javascript y permite definir de forma gráfica modelos, campos, métodos y opciones meta en un estilo bastante similar a UML. Resulta útil para tener una representación más gráfica de los modelos y generar su código automáticamente.</description>
	</item>

	<item>
	<title>Diapositivas del taller Django en Nicaragua</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/diapositivas-taller-django-nicaragua/</link>
	<guid>http://django.es/blog/diapositivas-taller-django-nicaragua/</guid>
	<pubDate>mié, 27 Oct 2010 10:47:30 +0200</pubDate>
	<description>Estas son las diapositivas del taller sobre Django que impartió ayer Adolfo Fitoria en Nicaragua.</description>
	</item>

	<item>
	<title>Diapositivas del Curso de Django en Deusto</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/diapositivas-curso-django-deusto/</link>
	<guid>http://django.es/blog/diapositivas-curso-django-deusto/</guid>
	<pubDate>dom, 3 Oct 2010 17:45:45 +0200</pubDate>
	<description>Ya están en SlideShare las diapositivas del curso &quot;Django: Disfruta programando&quot; que han impartido Jaime Irurzun y Jorge Bastida en la Univesidad de Deusto. Aquí las tenéis y también podéis descargar el código del curso desde aquí.</description>
	</item>

	<item>
	<title>Trabajar con slugs en URLs</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/slugs-en-urls/</link>
	<guid>http://django.es/blog/slugs-en-urls/</guid>
	<pubDate>dom, 29 Ago 2010 12:12:20 +0200</pubDate>
	<description>Una de las cosas que los buscadores tienen en cuenta para establecer la relevancia de sus resultados son las palabras que aparecen en las URLs. Por eso conviene que las URLs de nuestros objetos incluyan un slug que los represente.</description>
	</item>

	<item>
	<title>Agrupar mediante el templatetag {% regroup %} con una función propia</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/regroup-agrupar-templatetag-funcion/</link>
	<guid>http://django.es/blog/regroup-agrupar-templatetag-funcion/</guid>
	<pubDate>sáb, 21 Ago 2010 21:10:30 +0200</pubDate>
	<description>El templatetag {% regroup %} del lenguaje de plantillas de Django nos permite agrupar un listado de objetos por una propiedad. Generalmente utilizamos un campo por el que agrupar pero también podemos utilizar una función propia para agrupar los objetos como queramos.

Vamos a ver un ejemplo sencillo en el que agruparemos un listado de artículos por su fecha de publicación, dividiéndolos en artículos publicados &quot;Esta semana&quot;, &quot;La semana pasada&quot; y &quot;Hace X semanas&quot; ...</description>
	</item>

	<item>
	<title>Crear gráficas estadísticas con Django y Google Visualization API</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/graficas-estadisticas-django-google-visualization-api/</link>
	<guid>http://django.es/blog/graficas-estadisticas-django-google-visualization-api/</guid>
	<pubDate>dom, 15 Ago 2010 01:14:12 +0200</pubDate>
	<description>Vamos a ver cómo combinar django-qsstats para generar estadísticas y Google Visualization API para representarlas gráficamente.

django-qsstats permite obtener estadísticas agregadas sobre querysets de forma sencilla. Vamos a crear una vista que nos dé el número de usuarios registrados cada día para los últimos 14 días...</description>
	</item>

	<item>
	<title>Descargar y guardar archivos por su URL</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/descargar-guardar-archivos-url/</link>
	<guid>http://django.es/blog/descargar-guardar-archivos-url/</guid>
	<pubDate>sáb, 14 Ago 2010 00:40:59 +0200</pubDate>
	<description>Vamos a ver cómo guardar un archivo a partir de su URL. Este método nos permitirá descargar y guardar cualquier archivo de Internet y nos servirá tanto para campos ImageField como FileField...</description>
	</item>

	<item>
	<title>Aplicar filtros a annotate() al usar Count()</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/queryset-aplicar-filtros-annotate-count/</link>
	<guid>http://django.es/blog/queryset-aplicar-filtros-annotate-count/</guid>
	<pubDate>vie, 13 Ago 2010 21:56:43 +0200</pubDate>
	<description>A veces queremos utilizar la función de aggregación annotate() y aplicar filtros al modelo que se encuentra dentro de la misma, pero no es posible hacerlo con el ORM de Django actualmente. En este caso la solución pasa por usar la función extra() del ORM de Django para incluir SQL propio...</description>
	</item>

	<item>
	<title>Merengue: el nuevo y sorprendente CMS basado en Django</title>
	<author>Manuel Saelices</author>
	<link>http://django.es/blog/merengue-cms-basado-en-django/</link>
	<guid>http://django.es/blog/merengue-cms-basado-en-django/</guid>
	<pubDate>vie, 6 Ago 2010 23:30:14 +0200</pubDate>
	<description>Django es una excelente plataforma de desarrollo web, con una enorme comunidad de desarrolladores, siendo el framework web Python más popular. Sin embargo, Django no dispone de un CMS tan completo como otros muchos existentes en el mercado (Drupal, Plone, ModX, etc.)

Merengue es un proyecto financiado por la Universidad de Málaga que pretende cubrir ese hueco existente, y que ha sido desarrollado reutilizando multitud de código proveniente de otros proyectos. También se ha reaprovechado el gran conocimiento previo que se poseía de otros CMSs existentes, principalmente Plone y Drupal, así como otras soluciones basadas en Django (Pinax, django-cms, feincms, LFC, etc.).</description>
	</item>

	<item>
	<title>Generar archivos PDF con Django y Pisa</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/generar-pdfs-con-django-y-pisa/</link>
	<guid>http://django.es/blog/generar-pdfs-con-django-y-pisa/</guid>
	<pubDate>mié, 4 Ago 2010 14:20:58 +0200</pubDate>
	<description>Pisa es un conversor de HTML/XHTML a PDF escrito en Python. Vamos a ver cómo utilizar Pisa en nuestras vistas para convertir nuestras plantillas HTML a PDF.

Lo primero que tenemos que hacer es descargar e instalar Pisa. Pisa requiere ReportLab Toolkit, HTML5lib, pyPdf y PIL (útil: Cómo instalar PIL en Mac OSX). La forma más sencilla de instalar Pisa es mediante easy_install...</description>
	</item>

	<item>
	<title>Sorteamos &quot;La guía definitiva de Django&quot;</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/sorteamos-la-guia-definitiva-de-django/</link>
	<guid>http://django.es/blog/sorteamos-la-guia-definitiva-de-django/</guid>
	<pubDate>sáb, 10 Jul 2010 11:00:00 +0200</pubDate>
	<description>Hace días avisamos de que íbamos a sortear una de las copias de &quot;La guía definitiva de Django&quot; que Anaya Multimedia nos envió. ¡Y hoy nos ponemos a ello!

Para entrar en el sorteo sólo tenéis que escribir un comentario en esta entrada mediante el formulario que encontraréis al final de la página explicando sobre qué os gustaría que escribiéramos en el blog de Django.es. Obviamente debe tratarse de algún tema relacionado con Django.</description>
	</item>

	<item>
	<title>Probando los sabores de localflavor</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/probando-sabores-localflavor/</link>
	<guid>http://django.es/blog/probando-sabores-localflavor/</guid>
	<pubDate>vie, 9 Jul 2010 14:10:20 +0200</pubDate>
	<description>Django incluye la aplicación django.contrib.localflavor que agrupa campos de formulario y widgets específicos para distintos países. Vamos a ver lo que podemos hacer con el &quot;local flavor&quot; para España.</description>
	</item>

	<item>
	<title>Formularios con Django sin SPAM</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/formularios-django-spam/</link>
	<guid>http://django.es/blog/formularios-django-spam/</guid>
	<pubDate>jue, 8 Jul 2010 22:59:18 +0200</pubDate>
	<description>¿Quieres luchar contra el SPAM en tus formularios sin tener que modificarlos? Una forma sencilla de evitar gran parte del SPAM automático son los snippets AntiSpamForm y AntiSpamModelForm. Están basados en los formularios anti-spam que utiliza la aplicación django.contrib.comments...</description>
	</item>

	<item>
	<title>&quot;La guía definitiva de Django&quot;</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/la-guia-definitiva-de-django/</link>
	<guid>http://django.es/blog/la-guia-definitiva-de-django/</guid>
	<pubDate>dom, 27 Jun 2010 14:00:06 +0200</pubDate>
	<description>Hace unos días recibimos dos ejemplares de La guía definitiva de Django que nos enviaron nuestros amigos de Anaya Multimedia. Se trata del primer libro publicado en español sobre Django y es la traducción al español de &quot;The Definitive Guide to Django&quot;...

La guía definitiva de Django&quot; contiene todos los capítulos de &quot;The Definitive Guide to Django&quot; y resulta más amena que ésta para aquellos que no dominan tanto el inglés o prefieren leerla en castellano...</description>
	</item>

	<item>
	<title>Haystack 1.0 liberado</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/haystack-10-liberado/</link>
	<guid>http://django.es/blog/haystack-10-liberado/</guid>
	<pubDate>mié, 2 Dic 2009 01:12:47 +0100</pubDate>
	<description>Hace un par de días se ha liberado la versión 1.0 final de Haystack. Haystack es probablemente la forma más sencilla de añadir un sistema de búsqueda a Django. Ofrece una API que permite utilizar distintos backends de búsqueda como Solr, Whoosh ó Xapian. Además ofrece una interfaz para realizar las búsquedas llamada SearchQuerySet que es muy similar a las QuerySets de Django.</description>
	</item>

	<item>
	<title>Actualización de seguridad Django 1.0 y 1.1</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/actualizacion-seguridad-django-10-11/</link>
	<guid>http://django.es/blog/actualizacion-seguridad-django-10-11/</guid>
	<pubDate>lun, 12 Oct 2009 10:46:47 +0200</pubDate>
	<description>Hace un par de días se publicó una importante actualización de seguridad para Django 1.0, 1.1 y la versión de desarrollo. El agujero de seguridad afecta a cualquier aplicación que utiliza campos EmailField ó URLField en sus modelos. El fallo se debe a la validación de direcciones de e-mail y URLs mediante expresiones regulares. Algunas direcciones podían producir un rendimiento negativo en el sistema al aplicarles las expresiones regulares haciendo que el thread correspondiente dejara de responder y se consumieran más recursos de la CPU pudiendo resultar en una denegación de servicio si se hiciera deliberadamente.</description>
	</item>

	<item>
	<title>MSNBC.com adquiere EveryBlock</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/msnbc-adquiere-everyblock/</link>
	<guid>http://django.es/blog/msnbc-adquiere-everyblock/</guid>
	<pubDate>mar, 18 Ago 2009 01:24:07 +0200</pubDate>
	<description>EveryBlock es uno de los proyectos más interesantes realizados con Django. Se trata de un sitio que ofrece información y noticias locales sobre barrios y vecindarios en distintas ciudades de Estados Unidos. En EveryBlock se puede encontrar información tan diversa como las últimas noticias políticas relacionadas con el Bronx o las últimas inspecciones de restaurantes en Brooklyn, Nueva York. De esta forma EveryBlock es el sistema de noticias más &quot;microlocal&quot; que se puede encontrar actualmente.
Ya hablamos de EveryBlock cuando liberó su código fuente hace apenas mes y medio. Ahora ha sido adquirido por MSNBC.com tal y como explican en su blog. Pese a la adquisición por parte de MSNBC.com en principio EveryBlock va a seguir funcionando de forma independiente y va a seguir en las manos del mismo equipo que lo creó (entre los que se encuentran varios desarrolladores de Django). El código fuente liberado seguirá estando disponible.</description>
	</item>

	<item>
	<title>Modificar la QuerySet de un ModelChoiceField dinámicamente</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/modificar-queryset-modelchoicefield-dinamicamente/</link>
	<guid>http://django.es/blog/modificar-queryset-modelchoicefield-dinamicamente/</guid>
	<pubDate>vie, 7 Ago 2009 18:48:29 +0200</pubDate>
	<description>El campo de formulario ModelChoiceField sirve para permitir la selección de un elemento entre los objetos resultantes de una QuerySet. La QuerySet inicial puede definirse en el propio campo del formulario. Un ejemplo de uso en nuestro forms.py sería ...</description>
	</item>

	<item>
	<title>Subdominios con Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/subdominios-django/</link>
	<guid>http://django.es/blog/subdominios-django/</guid>
	<pubDate>dom, 2 Ago 2009 00:23:23 +0200</pubDate>
	<description>En ocasiones nos interesa trabajar con subdominios en nuestros proyectos Django. Para ello podemos utilizar un sencillo middleware para subdominios que podemos encontrar en djangosnippets. Basta con guardarlo en nuestro proyecto e incluirlo en la lista MIDDLEWARE_CLASSES de nuestro settings.py. De esta forma tendremos el subdominio de la petición en la variable subdomain del objeto request ...</description>
	</item>

	<item>
	<title>Django 1.1</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/django-11/</link>
	<guid>http://django.es/blog/django-11/</guid>
	<pubDate>mié, 29 Jul 2009 19:33:36 +0200</pubDate>
	<description>Por fin se ha anunciado la esperada versión 1.1 de Django. Ya se puede descargar desde el sitio oficial e incluye la actualización de seguirdad publicada ayer: Descarga Django 1.1 desde el sitio oficial.</description>
	</item>

	<item>
	<title>Django 1.1 Release Candidate ya está aquí</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/django-11-release-candidate/</link>
	<guid>http://django.es/blog/django-11-release-candidate/</guid>
	<pubDate>jue, 23 Jul 2009 00:24:13 +0200</pubDate>
	<description>Se ha anunciado la disponibilidad de Django 1.1 Release Candidate en el weblog oficial de Django. Django 1.1 RC no está pensado para uso en producción pero es un paso más hacia la versión final de Django 1.1: Incluye casi todas las mejoras que estarán presentes en la versión final. Se puede descargar directamente desde aquí. La versión final de Django 1.1 se espera para la semana que viene.</description>
	</item>

	<item>
	<title>oEmbed y Django: incrusta contenidos de servicios web con django-oembed</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/oembed-django-incrusta-contenidos-servicios-web-django-oembed/</link>
	<guid>http://django.es/blog/oembed-django-incrusta-contenidos-servicios-web-django-oembed/</guid>
	<pubDate>mar, 21 Jul 2009 23:59:09 +0200</pubDate>
	<description>oEmbed es un formato que permite usar una representación embebida de una URL en sitios web de terceros. La API de oEmbed permite a un sitio web incrustar contenido (como fotos o vídeos) de otros servicios web simplemente con un enlace al recurso que quiere se publicar. De esta forma se evita tener que utilizar una API distinta para incrustar contenidos de cada servicio web. Varios sitios como Flickr, Viddler, Qik, Hulu o Vimeo permiten acceder a sus contenidos mediante oEmbed. Además el sitio web oohEmbed sirve como wrapper para acceder a contenidos de otros sitios como YouTube, Wikipedia ó Wordpress.com entre otros ...</description>
	</item>

	<item>
	<title>Templatetag {% if %} con más comparaciones</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/templatetag-if-con-mas-comparaciones/</link>
	<guid>http://django.es/blog/templatetag-if-con-mas-comparaciones/</guid>
	<pubDate>dom, 19 Jul 2009 11:44:00 +0200</pubDate>
	<description>Este snippet reemplaza la funcionalidad del templatetag {% if %} permitiendo realizar comparaciones con operadores &gt;, &lt;, &gt;=, &lt;=, != además de las comparaciones que permite hacer {% if %} por defecto ...</description>
	</item>

	<item>
	<title>Crear una imagen de nuestros modelos con django-command-extensions</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/crear-una-imagen-de-nuestros-modelos-con-django-command-extensions/</link>
	<guid>http://django.es/blog/crear-una-imagen-de-nuestros-modelos-con-django-command-extensions/</guid>
	<pubDate>dom, 12 Jul 2009 11:43:07 +0200</pubDate>
	<description>Algo interesante que nos aporta django-command-extensions es poder crear una representación gráfica de nuestros modelos (o por decirlo de otro modo nuestro esquema de base de datos) con tan sólo un comando. Esto es posible gracias a GraphViz y el resultado es algo parecido a un diseño UML. Para poder utilizar este comando debemos tener instalado pygraphviz y por supuesto la aplicación django_extensions debe estar incluída en el setting INSTALLED_APPS de nuestro proyecto ...</description>
	</item>

	<item>
	<title>DjangoCon 2009 en Portland</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/djangocon-2009-en-portland/</link>
	<guid>http://django.es/blog/djangocon-2009-en-portland/</guid>
	<pubDate>vie, 10 Jul 2009 12:24:26 +0200</pubDate>
	<description>La próxima DjangoCon tendrá lugar del 8 al 12 de Septiembre en Portland (Oregon). Los primeros 3 días serán de conferencia y los siguientes 2 de sprint. El precio de asistencia está entre los 132$ y los 400$. Tenéis toda la información en la página de DjangoCon, donde también está abierta la propuesta de charlas.</description>
	</item>

	<item>
	<title>EveryBlock libera su código fuente</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/everyblock-libera-codigo-fuente/</link>
	<guid>http://django.es/blog/everyblock-libera-codigo-fuente/</guid>
	<pubDate>jue, 2 Jul 2009 23:39:37 +0200</pubDate>
	<description>Hace un par de días se ha liberado el código de EveryBlock bajo licencia GPL. EveryBlock ofrece noticias e información local sobre barrios de distintas ciudades de Estados Unidos. Se trata de uno de los sitios web más interesantes que utilizan Django.

El código fuente se puede encontrar dividido en distintos paquetes en el sitio oficial. El código incluye paquetes que trabajan con información geográfica, el sistema de publicación completo de EveryBlock y hasta un paquete de blog y otro de wiki.</description>
	</item>

	<item>
	<title>Diapositivas de curso de introducción a Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/diapositivas-curso-introduccion-django/</link>
	<guid>http://django.es/blog/diapositivas-curso-introduccion-django/</guid>
	<pubDate>lun, 1 Jun 2009 12:15:16 +0200</pubDate>
	<description>Hace tiempo que Ramiro Morales, Alejandro Peralta y John Lenton impartieron un curso de introducción a Django en Argentina. Me he topado con las diapositivas del curso, y, aunque haya pasado bastante tiempo, las enlazo porque siguen siendo útiles para todos aquellos que estén empezando con Django 1.0.x ...</description>
	</item>

	<item>
	<title>Expires headers lejanos y versiones de media</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/expire-headers-lejanos-versiones-de-media/</link>
	<guid>http://django.es/blog/expire-headers-lejanos-versiones-de-media/</guid>
	<pubDate>vie, 22 May 2009 00:52:14 +0200</pubDate>
	<description>Un buen truco para mejorar el tiempo de carga de nuestras páginas es añadir a los archivos de media (imágenes, css, js) el header Expires (ver headers de HTML) con una fecha lejana (por ejemplo un año de diferencia). Este header define cuándo expira el archivo, es decir, hasta cuando el navegador puede considerar la respuesta del archivo válida. Esto significa que cuando el navegador descarga un archivo con header Expires puede almacenarlo en caché y utilizarlo sin tener que volver a descargarlo otra vez cuando el usuario visite de nuevo el sitio web, hasta que llegue la fecha descrita en el header Expires ...</description>
	</item>

	<item>
	<title>Migración de esquemas con django-evolution</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/migracion-esquemas-con-django-evolution/</link>
	<guid>http://django.es/blog/migracion-esquemas-con-django-evolution/</guid>
	<pubDate>jue, 21 May 2009 13:23:40 +0200</pubDate>
	<description>Las migraciones o evoluciones de esquema son las modificaciones que hacemos a modelos ya creados y que afectan a la base de datos. Cuando sincronizamos por primera vez los modelos de nuestra aplicación mediante syncdb se crean las tablas necesarias para los mismos en la base de datos. Si tras esto realizamos cambios en nuestros modelos tendremos que ejecutar el comando manage.py reset aplicacion para que se borren las tablas correspondientes a nuestra aplicación y vuelvan a crearse nuevas tablas a partir de los nuevos modelos.

El problema se nos plantea cuando tenemos que realizar cambios en modelos que ya estamos utilizando para almacenar datos y por lo tanto no podemos eliminar sus tablas para volver a crearlas. Esto ocurre sobre todo en los entornos de producción. Las soluciones principales son 2: Modificar nuestro modelo y realizar manualmente los cambios equivalentes en sus respectivas tablas de la base de datos ó utilizar alguna herramienta de migración de esquemas como django-evolution, South ó dmigrations.

Vamos a ver cómo usar django-evolution para realizar nuestras migraciones de esquema de una forma sencilla.</description>
	</item>

	<item>
	<title>Escribir comandos de administración en Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/escribir-comandos-de-administracion-django/</link>
	<guid>http://django.es/blog/escribir-comandos-de-administracion-django/</guid>
	<pubDate>mar, 19 May 2009 09:59:56 +0200</pubDate>
	<description>Muchas veces nos gustaría crear comandos propios que puedan ejecutarse mediante django-admin.py ó el manage.py de nuestro proyecto. Django permite crear comandos de administración específicos para cada aplicación de nuestro proyecto. Para crear comandos específicos, dentro de la carpeta de nuestra aplicación debemos crear un directorio llamado management y dentro de éste otro llamado commands ...</description>
	</item>

	<item>
	<title>Django Dash 2009</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/django-dash-2009/</link>
	<guid>http://django.es/blog/django-dash-2009/</guid>
	<pubDate>lun, 18 May 2009 11:56:10 +0200</pubDate>
	<description>El 30 de mayo comenzará Django Dash. Se trata de una competición en la que hay que desarrollar la mejor aplicación web que se pueda en tan sólo 48 horas, obviamente, con Django. Se pueden inscribir equipos de hasta 3 personas. La inscripción se cierra dentro de 5 días. El equipo ganador obtendrá diversos premios...</description>
	</item>

	<item>
	<title>Convenciones de aplicaciones reusables en Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/convenciones-aplicaciones-reusables-django/</link>
	<guid>http://django.es/blog/convenciones-aplicaciones-reusables-django/</guid>
	<pubDate>vie, 1 May 2009 02:11:42 +0200</pubDate>
	<description>Este post es una traducción al español de Django reusable apps conventions, escrito por Eric Holscher. Trata de servir como punto de referencia sobre las mejores prácticas y convenciones en Django.</description>
	</item>

	<item>
	<title>Ejecutar tareas automáticas con django-chronograph</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/ejecutar-tareas-automaticas-con-django-chronograph/</link>
	<guid>http://django.es/blog/ejecutar-tareas-automaticas-con-django-chronograph/</guid>
	<pubDate>jue, 9 Abr 2009 15:47:20 +0200</pubDate>
	<description>Django-chronograph es una aplicación que permite programar la ejecución de tareas automáticas de manage.py utilizando cron. Permite especificar las tareas a realizar y el intervalo de tiempo en el que se deben repetir mediante el sitio de administración de Django. Esto es muy útil para automatizar tareas repetitivas de nuestro proyecto como pueden ser enviar un e-mail semanal automático a todos los usuarios ó eliminar diariamente cuentas de usuarios inactivos. Django-chronograph también almacena un listado de logs visible desde el sitio de administración que nos permite comprobar los resultados de las tareas ejecutadas.</description>
	</item>

	<item>
	<title>Utilizar un formulario para modificar dos modelos</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/utilizar-un-formulario-para-modificar-2-modelos/</link>
	<guid>http://django.es/blog/utilizar-un-formulario-para-modificar-2-modelos/</guid>
	<pubDate>lun, 6 Abr 2009 17:39:38 +0200</pubDate>
	<description>A veces tenemos que modificar información relativa a dos o más modelos distintos desde un solo formulario HTML. Es algo común por ejemplo cuando definimos un perfil de usuario y necesitamos que se pueda modificar la información del modelo User del sistema de autenticación de Django y la información de nuestro modelo de perfil simultáneamente. Vamos a ver cómo puede hacerse. Para seguir este ejemplo necesitaremos tener django.contrib.auth entre las aplicaciones instaladas de nuestro proyecto (setting INSTALLED_APPS).</description>
	</item>

	<item>
	<title>Templatetags globales en nuestros proyectos Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/templatetags-globales-en-nuestros-proyectos-django/</link>
	<guid>http://django.es/blog/templatetags-globales-en-nuestros-proyectos-django/</guid>
	<pubDate>mar, 31 Mar 2009 00:32:43 +0200</pubDate>
	<description>Los templatetags de Django son a nivel de aplicación. Sin embargo a veces nos gustaría que distintas aplicaciones compartieran templatetags ó evitarnos tener que cargarlos en todas las plantillas mediante {% load ... %}.
Este sencillo snippet muestra cómo registrar templatetags de modo global para todo el proyecto gracias a la función add_to_builtins de django.template.</description>
	</item>

	<item>
	<title>Nuevo sitio web para django-thumbs</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/nuevo-sitio-para-django-thumbs/</link>
	<guid>http://django.es/blog/nuevo-sitio-para-django-thumbs/</guid>
	<pubDate>dom, 22 Mar 2009 12:52:16 +0100</pubDate>
	<description>django-thumbs ya tiene nuevo sitio web: http://djangothumbnails.com. La versión 0.3 de django-thumbs funciona correctamente con la versión de desarrollo de Django actual y soluciona algunos problemas de las versiones anteriores. django-thumbs permite crear miniaturas de imágenes para los campos ImageField de tus modelos.</description>
	</item>

	<item>
	<title>Personalizar el título del sitio de administración</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/personalizar-titulo-sitio-administracion/</link>
	<guid>http://django.es/blog/personalizar-titulo-sitio-administracion/</guid>
	<pubDate>sáb, 21 Mar 2009 14:22:32 +0100</pubDate>
	<description>¿Te has cansado del monótono título &quot;Administración de Django&quot; que aparece en el sitio de administración de tu proyecto? Django permite personalizar las plantillas del sistema de administración fácilmente. Puedes tener plantillas de administración personalizadas a nivel de modelo, aplicación o proyecto...</description>
	</item>

	<item>
	<title>Sprint de Django en el PyCamp Argentina 2009</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/sprint-django-pycamp-argentina-2009/</link>
	<guid>http://django.es/blog/sprint-django-pycamp-argentina-2009/</guid>
	<pubDate>sáb, 21 Mar 2009 00:57:48 +0100</pubDate>
	<description>Por el blog de Ramiro Morales me entero de que desde hoy día 21 hasta el 24 tiene lugar el PyCamp Argentina 2009 en Los Cocos, en Córdoba (Argentina). Parece que se han puesto las pilas y se va a realizar un sprint de Django durante el evento: http://www.python.com.ar/moin/PyCamp/2009/TemasPropuestos/SprintDjango

Esperemos que la comunidad Argentina de Python se entusiasme con Django y sean muchos los que participen ;)</description>
	</item>

	<item>
	<title>Snippet de vista para i18n</title>
	<author>Diego Andrés </author>
	<link>http://django.es/blog/snippet-de-vista-para-i18n/</link>
	<guid>http://django.es/blog/snippet-de-vista-para-i18n/</guid>
	<pubDate>vie, 20 Mar 2009 23:45:48 +0100</pubDate>
	<description>Una vista genérica para escoger el idioma a través de una url y ser redirigido al punto en el que se encontraba el usuario.</description>
	</item>

	<item>
	<title>Convenciones de proyecto en Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/convenciones-proyecto-django/</link>
	<guid>http://django.es/blog/convenciones-proyecto-django/</guid>
	<pubDate>mar, 10 Mar 2009 12:16:53 +0100</pubDate>
	<description>Django ofrece una flexibilidad muy grande a la hora de configurar nuestros proyectos permitiéndonos organizarlos con estructuras muy diversas. Esta flexibilidad permite que podamos adaptar Django a necesidades concretas pero por otro lado hace que mucha gente se pregunte cuál es la manera correcta de organizar la estructura de sus proyectos. Convenciones en Django, creado por Eric Holscher, pretende ser un punto de referencia sobre las mejores prácticas y convenciones en Django. Esto es una traducción al español de las convenciones sobre proyectos.</description>
	</item>

	<item>
	<title>Slughifi: slugs a prueba de caracteres internacionales</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/slughifi-slugs-prueba-de-caracteres-internacionales/</link>
	<guid>http://django.es/blog/slughifi-slugs-prueba-de-caracteres-internacionales/</guid>
	<pubDate>mar, 10 Mar 2009 10:52:22 +0100</pubDate>
	<description>Slughifi es un código que mejora las características de la función slugify de django.template.defaultfilters. Soporta muchos más caracteres internacionales con todo tipo de acentuación. Mientras que slugify elimina todos estos caracteres al generar el slug, slughifi los reemplaza por caracteres no acentuados haciendo honor a su nombre al proporcionar slugs altamente fieles a la cadena sobre la que se aplica. Fue presentado hace bastante tiempo en este hilo de la lista de correo django-users y dí con él por casualidad. Desde entonces no he dejado de utilizarlo en mis proyectos. Slughifi parece no estar disponible en la página original en la que se encontraba. Sin embargo sí lo está en el trac de django-fr y también lo podéis bajar directamente desde aquí.</description>
	</item>

	<item>
	<title>Añadir encoding UTF-8 a nuestros archivos .py</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/anadir-encoding-utf-8-nuestros-archivos-py/</link>
	<guid>http://django.es/blog/anadir-encoding-utf-8-nuestros-archivos-py/</guid>
	<pubDate>dom, 8 Mar 2009 11:56:31 +0100</pubDate>
	<description>Esto es una pequeña ayuda para aquellos que empiezan con Python/Django. A menudo utilizamos variables o comentarios en nuestro código python que tienen caracteres acentuados u otros que no son ASCII. Estos caracteres causan errores de sintaxis como el siguiente:

SyntaxError: Non-ASCII character &#39;\xc3&#39; in file /proyecto/app1/models.py on line 5, but no encoding declared;

Para solucionarlo nos basta con definir el encoding a utilizar insertando la siguiente línea de texto al comienzo de nuestro archivo .py:

# -*- encoding: utf-8 -*-

Con esto estaremos especificando que nuestro archivo .py está codificado en UTF-8. La codificación UTF-8 bastará en la mayoría de los casos pero también puedes utilizar otras codificaciones. Aquí tienes más información respecto a este tema.</description>
	</item>

	<item>
	<title>Representar campos con choices en nuestras plantillas</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/representar-campos-con-choices-plantillas/</link>
	<guid>http://django.es/blog/representar-campos-con-choices-plantillas/</guid>
	<pubDate>dom, 8 Mar 2009 01:01:41 +0100</pubDate>
	<description>Cuando usamos un campo con diferentes opciones (choices) en nuestro modelo utilizamos una lista de elementos cada uno con el valor real que se almacenará en la base de datos seguido por la representación legible del dato. Un ejemplo es el siguiente modelo ... Suponiendo que tenemos una plantilla que recibe un objeto Artista en la variable {{ artista }} normalmente accedemos al valor de sus campos mediante {{ artista.campo }}. Pero al estar usando choices con {{ artista.estilo }} obtendremos el valor almacenado en la base de datos en vez de su representación legible definida en ESTILOS_CHOICES. ¿Cómo acceder a la forma legible del dato? ...</description>
	</item>

	<item>
	<title>Instalar PIL en Mac OS X Leopard 10.5.6</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/instalar-pil-en-mac-os-x-leopard-1056/</link>
	<guid>http://django.es/blog/instalar-pil-en-mac-os-x-leopard-1056/</guid>
	<pubDate>sáb, 7 Mar 2009 19:12:06 +0100</pubDate>
	<description>Al instalar Django en Mac OS X, si utilizamos ImageField en nuestros modelos necesitaremos PIL (Python Imaging Library), la librería de tratamiento de imágenes para Python. Tras probar con distintos métodos que no han tenido éxito he encontrado un post que explica de una forma sencilla cómo hacerlo. Estos son los pasos a seguir.</description>
	</item>

	<item>
	<title>Error común en upload_to de ImageFields y FileFields</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/error-comun-en-upload_to-de-imagefields-y-filefields/</link>
	<guid>http://django.es/blog/error-comun-en-upload_to-de-imagefields-y-filefields/</guid>
	<pubDate>vie, 27 Feb 2009 01:33:20 +0100</pubDate>
	<description>Hoy me he topado con un artículo sobre un error muy común al utilizar ImageField ó FileField. Al usar cualquiera de estos dos tipos de campo podemos especificar la ruta relativa a nuestro setting MEDIA_ROOT en la que queremos que se guarde el archivo subido mediante el argumento upload_to...</description>
	</item>

	<item>
	<title>Descubriendo objetos similares por sus etiquetas 2</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/descubriendo-objetos-similares-por-etiquetas-2/</link>
	<guid>http://django.es/blog/descubriendo-objetos-similares-por-etiquetas-2/</guid>
	<pubDate>mar, 24 Feb 2009 23:50:01 +0100</pubDate>
	<description>Ya hablamos anteriormente sobre cómo descubrir objetos similares por sus etiquetas con la versión 1.0 de Django. Sin embargo la versión de desarrollo de Django incluye funciones de agregación que nos permiten realizar este tipo de tareas de una manera más cómoda sin tener que utilizar SQL puro como hacíamos antes.
Partiremos exactamente del mismo código que usamos la vez anterior: Dos modelos definidos en el archivo models.py de nuestra aplicación...</description>
	</item>

	<item>
	<title>Mejoras en django.es y feed de la comunidad</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/mejoras-django-es-feed-comunidad/</link>
	<guid>http://django.es/blog/mejoras-django-es-feed-comunidad/</guid>
	<pubDate>mar, 17 Feb 2009 20:40:58 +0100</pubDate>
	<description>Sois varios los que nos habéis pedido un feed con las últimas entradas de los blogs la comunidad. Pues aquí lo tenéis.
También hemos introducido algunas mejoras en django.es para que las páginas de nuestro sitio web carguen más rápido, y parece que lo hemos conseguido :) Por ejemplo los feeds de la página de inicio ya no se cargan en el lado del servidor al procesar la página sino mediante javascript una vez se ha cargado el documento.</description>
	</item>

	<item>
	<title>EuroDjangoCon: Primera conferencia Django en Europa</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/eurodjangocon-primera-conferencia-django-en-europa/</link>
	<guid>http://django.es/blog/eurodjangocon-primera-conferencia-django-en-europa/</guid>
	<pubDate>lun, 26 Ene 2009 12:12:16 +0100</pubDate>
	<description>Ya tiene fecha la primera conferencia europea de Django. La EuroDjangoCon tendrá lugar en la bella ciudad de Praga del 4 al 6 de Mayo. Ya se ha creado la web informativa desde la que se admiten propuestas de charalas sobre cualquier tema relacionado con Django.</description>
	</item>

	<item>
	<title>Sprint de traducción terminado</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/sprint-de-traduccion-terminado/</link>
	<guid>http://django.es/blog/sprint-de-traduccion-terminado/</guid>
	<pubDate>lun, 12 Ene 2009 11:26:50 +0100</pubDate>
	<description>Ayer terminó el sprint de traducción. En estos tres días que ha durado hemos traducido al español 22 archivos de la documentación de Django y aún hay otros archivos en proceso de traducción. Dar las gracias a las personas que han participado, especialmente a Macarse, Percy Perez, Dalues, Joel Davila y Jose Alonso Peñarrieta. Hemos traducido una buena parte de la documentación de Django pero aún quedan otros archivos por traducir para todo el que se anime a continuar :)</description>
	</item>

	<item>
	<title>Descubriendo objetos similares por sus etiquetas</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/descubriendo-objetos-similares-por-etiquetas/</link>
	<guid>http://django.es/blog/descubriendo-objetos-similares-por-etiquetas/</guid>
	<pubDate>sáb, 10 Ene 2009 19:51:30 +0100</pubDate>
	<description>Muchas veces utilizamos etiquetas para nuestros modelos de datos para poder distinguirlos por categorías. Cuando empecé a utilizar etiquetas para mis modelos con Django una de las primeras dudas que me surgió fue cómo poder encontrar objetos similares a otro objeto a partir de sus etiquetas. Sin ir más lejos es una característica que hemos añadido a este blog recientemente: En la página de un post se muestran otros similares por si son de interés para el visitante. Esta funcionalidad la hemos implementado exactamente con el mismo código que os vamos a mostrar hoy ...</description>
	</item>

	<item>
	<title>Comienza el sprint de traducción al español</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/comienza-sprint-de-traduccion-al-espanol/</link>
	<guid>http://django.es/blog/comienza-sprint-de-traduccion-al-espanol/</guid>
	<pubDate>vie, 9 Ene 2009 00:18:41 +0100</pubDate>
	<description>¡Ya es día 9 de Enero! Comienza el sprint de traducción on-line de la documentación oficial de Django.

Podéis seguir todos los pasos para traducir en este post. Recordad que para cualquier problema que surja estamos disponibles en la lista de correo y también a través del formulario de contacto. ¡A sprintar! :)</description>
	</item>

	<item>
	<title>Traducir la documentación de Django al español</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/traducir-la-documentacion-de-django-al-espanol/</link>
	<guid>http://django.es/blog/traducir-la-documentacion-de-django-al-espanol/</guid>
	<pubDate>mar, 6 Ene 2009 18:33:34 +0100</pubDate>
	<description>Ya sólo quedan 3 días para que comience el sprint de traducción on-line de la documentación de Django al español. Para que no haya confusiones sobre cómo participar en él os dejamos una breve guia a continuación.</description>
	</item>

	<item>
	<title>Feliz Navidad y Feliz Año Nuevo</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/feliz-navidad-feliz-anio-nuevo/</link>
	<guid>http://django.es/blog/feliz-navidad-feliz-anio-nuevo/</guid>
	<pubDate>mar, 30 Dic 2008 17:07:32 +0100</pubDate>
	<description>Feliz Navidad Y Feliz Año Nuevo. Gracias por este año de entusiasmo con Django :)</description>
	</item>

	<item>
	<title>Idiomas en nuestras URLs gracias a django-localeurl</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/idiomas-en-nuestras-urls-gracias-django-localeurl/</link>
	<guid>http://django.es/blog/idiomas-en-nuestras-urls-gracias-django-localeurl/</guid>
	<pubDate>mar, 30 Dic 2008 14:07:40 +0100</pubDate>
	<description>django-localeurl es una aplicación que permite el uso de códigos de idiomas en las URLs de nuestro proyecto. Esto trae la ventaja de que cada página en cada idioma tiene una URL propia. Gracias a ello los buscadores indexan cada página en los distintos idiomas disponibles y nuestros usuarios pueden compartir las URLs de una página en el idioma que deseen. Además funciona a la perfección con LocaleMiddleware ...</description>
	</item>

	<item>
	<title>Enviar e-mails con Django y GMail</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/enviar-e-mails-con-django-y-gmail/</link>
	<guid>http://django.es/blog/enviar-e-mails-con-django-y-gmail/</guid>
	<pubDate>vie, 26 Dic 2008 02:24:33 +0100</pubDate>
	<description>Personalmente siempre he utilizado mi propio servidor SMTP para el envio de e-mails con Django, pero hoy me he topado con este post en español sobre el post original de Nathan Ostgard que explica fácilmente qué settings debes añadir a tu proyecto para que Django envíe e-mails a través de GMail. Muy útil cuando no disponemos de un servidor SMTP propio ...</description>
	</item>

	<item>
	<title>Generar miniaturas de imágenes con django-thumbs</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/thumbnails-miniaturas-imagenes-django-thumbs/</link>
	<guid>http://django.es/blog/thumbnails-miniaturas-imagenes-django-thumbs/</guid>
	<pubDate>mar, 23 Dic 2008 15:28:09 +0100</pubDate>
	<description>Tras ver que la mayoría de los proyectos existentes para generar miniaturas de imágenes (thumbnails) aún no funcionan con la API de Storage y que algunos resultan algo complejos para lo que yo quería me puse a desarrollar un campo que lo hiciera del modo más sencillo posible ... http://code.google.com/p/django-thumbs/</description>
	</item>

	<item>
	<title>Middleware para detectar visitas desde buscadores</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/middleware-para-detectar-visitas-desde-buscadores/</link>
	<guid>http://django.es/blog/middleware-para-detectar-visitas-desde-buscadores/</guid>
	<pubDate>lun, 22 Dic 2008 10:38:05 +0100</pubDate>
	<description>Saber si nuestro visitante viene de un buscador es interesante en varios casos. Por ejemplo para almacenar el término de búsqueda que le ha llevado a nuestro sitio web o desde qué buscador ha llegado para nutrir nuestras estadísticas. También nos sirve para destacar en nuestro sitio los términos de búsqueda sobre el resto del texto, facilitando que el usuario identifique rápidamente los fragmentos de información que le interesan ...</description>
	</item>

	<item>
	<title>Sprint online de traducción de documentación</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/sprint-online-traduccion-de-documentacion/</link>
	<guid>http://django.es/blog/sprint-online-traduccion-de-documentacion/</guid>
	<pubDate>vie, 19 Dic 2008 16:02:01 +0100</pubDate>
	<description>A través de la lista de correo django-es estamos organizando un sprint online de traducción de la documentación de Django al español. El sprint se realizará del 9 al 11 de Enero y servirá para traducir al español las partes más importantes de la documentación. Si quieres participar dirígete al trac del proyecto: http://trac.django.es/</description>
	</item>

	<item>
	<title>Evitar SPAM en formularios con magicforms</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/evitar-spam-formularios-magicforms/</link>
	<guid>http://django.es/blog/evitar-spam-formularios-magicforms/</guid>
	<pubDate>dom, 14 Dic 2008 13:09:14 +0100</pubDate>
	<description>¿Quieres evitar el spam en tus formularios sin tener que utilizar captchas ni tener que recurrir a servicios de terceros como Askimet? Entonces magicforms probablemente sea lo que estés buscando. Creadas por fíam, estas dos clases que heredan de django.forms.Form y django.forms.ModelForm respectivamente te ayudan a engañar a los spambots y tener unos formularios limpos de spam. ¿Cómo se consigue? ...</description>
	</item>

	<item>
	<title>Desarrollar con Django en Mac OS X Leopard</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/desarrollar-django-mac-osx-leopard/</link>
	<guid>http://django.es/blog/desarrollar-django-mac-osx-leopard/</guid>
	<pubDate>sáb, 6 Dic 2008 01:42:41 +0100</pubDate>
	<description>Vamos a ver cómo instalar Django en Mac OS X Leopard de un modo sencillo utilizando Python y SQLite que vienen incluidos en Leopard en sus versiones 2.5.1 para Phyton y 3.4.0 para SQLite. Para probar nuestras aplicaciones usaremos el development server que trae Django. Así no tendremos que instalar nada más que el propio Django...</description>
	</item>

	<item>
	<title>Traduce tus proyectos Django con Rosetta</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/traduce-tus-proyectos-django-con-rosetta/</link>
	<guid>http://django.es/blog/traduce-tus-proyectos-django-con-rosetta/</guid>
	<pubDate>mié, 3 Dic 2008 00:58:40 +0100</pubDate>
	<description>django-rosetta es una aplicación que facilita enormemente el proceso de traducción de tus proyectos y aplicaciones que utilizan internacionalización. La aplicación ofrece un interfaz muy similar al sistema de administración de Django (de hecho hace uso de sus css). Permite visualizar todos los catálogos de traducción, porcentaje de términos traducidos, etc. y realizar traducciones de un modo realmente cómodo. Para cada término de traducción muestra un enlace para sugerir la traducción adecuada que funciona gracias a la AJAX Language API de Google y que nos ahorra mucho tiempo...</description>
	</item>

	<item>
	<title>Crear feeds con Django</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/crear-feeds-con-django/</link>
	<guid>http://django.es/blog/crear-feeds-con-django/</guid>
	<pubDate>sáb, 29 Nov 2008 20:21:39 +0100</pubDate>
	<description>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. 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...</description>
	</item>

	<item>
	<title>Decorator para nuestras vistas AJAX</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/decorator-para-nuestras-vistas-ajax/</link>
	<guid>http://django.es/blog/decorator-para-nuestras-vistas-ajax/</guid>
	<pubDate>vie, 28 Nov 2008 15:53:07 +0100</pubDate>
	<description>Vamos a ver un sencillo snippet de código que nos va a permitir limitar las peticiones a las vistas que queramos a peticiones AJAX. La mayoría de las librerías JavaScript (jQuery, Prototype, Dojo, Mootools, YUI, etc.) envían en sus peticiones HTTP el header HTTP_X_REQUESTED_WITH con el valor XMLHttpRequest. El objeto HttpRequest de Django incorpora el método is_ajax() que chequea el valor del header HTTP_X_REQUESTED_WITH para devolver True en caso de que la petición se haya realizado de este modo. El siguiente decorator utiliza request.is_ajax() y devuelve un error 400 (Bad Request) si la petición no es una petición AJAX.

El snippet también está publicado en djangosnippets.org. Por supuesto, esto decorator no impide que alguien pueda hacer peticiones a las vistas en las que lo utilicemos incluyendo a propósito dicho header pero es una buena manera de limitar el acceso público a ellas.</description>
	</item>

	<item>
	<title>Métodos para crear perfiles de usuario</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/metodos-para-crear-perfiles-de-usuario/</link>
	<guid>http://django.es/blog/metodos-para-crear-perfiles-de-usuario/</guid>
	<pubDate>jue, 27 Nov 2008 15:14:38 +0100</pubDate>
	<description>En múltiples ocasiones nos gustaría extender el modelo User para que incluyera otros campos y funciones. La manera &quot;oficial&quot; de hacer esto (la mostrada en la documentación de Django) es creando un modelo para el perfil de usuario que incluya un campo con una ForeignKey apuntando a la clase User. Vamos a ver cómo se puede hacer de la forma oficial, con herencia y utilizando un método alternativo añadiendo atributos a la clase User con add_to_class...</description>
	</item>

	<item>
	<title>Settings accesibles desde las plantillas</title>
	<author>Antonio Melé</author>
	<link>http://django.es/blog/settings-accesibles-desde-las-plantillas/</link>
	<guid>http://django.es/blog/settings-accesibles-desde-las-plantillas/</guid>
	<pubDate>mié, 26 Nov 2008 11:49:33 +0100</pubDate>
	<description>Muchas veces deseamos acceder a los settings de nuestro proyecto desde alguna de nuestras plantillas. Lo ideal es crear un context processor que nos permita acceder a ellos desde cualquier plantilla de cualquier aplicación de nuestro proyecto. Para ello en la carpeta de nuestro proyecto creamos un nuevo archivo context_processors.py con el siguiente código: # importamos los settings del proyecto from django.conf import settings as _settings def settings(request): # los devolvemos en la variable de contexto &quot;settings&quot; return {&#39;settings&#39;: _settings} A continuación tenemos que añadir nuestro procesador de contexto a TEMPLATE_CONTEXT_PROCESSORS en nuestros settings (archivo settings.py). Recuerda que Django habilita los procesadores de contexto auth, debug e i18n por defecto. Al sobreescribir TEMPLATE_CONTEXT_PROCESSORS estaremos invalidándolos, por lo que deberemos añadirlos manualmente: TEMPLATE_CONTEXT_PROCESSORS = ( &#39;django.core.context_processors.auth&#39;, &#39;django.core.context_processors.debug&#39;, &#39;django.core.context_processors.i18n&#39;, &#39;mi_aplicacion.context_processors.settings&#39;,) Ahora podemos acceder fácilmente a nuestros settings desde cualquier plantilla utilizando el nombre del setting cuyo valor queremos obtener...</description>
	</item>

</channel>
</rss>
