<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>morenosan &#187; Django</title>
	<atom:link href="http://morenosan.com/category/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://morenosan.com</link>
	<description>Un blog a velocidad absurda</description>
	<lastBuildDate>Sat, 23 Jan 2010 19:42:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Instalación de Satchmo en varios cómodos pasos</title>
		<link>http://morenosan.com/2010/01/23/instalacion-satchmo-comodos-pasos/</link>
		<comments>http://morenosan.com/2010/01/23/instalacion-satchmo-comodos-pasos/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 19:42:47 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://morenosan.com/?p=56</guid>
		<description><![CDATA[
Durante la última semana he estado trabajando en una tienda virtual basada en Satchmo. Satchmo es un framework para la creación de tiendas virtuales web, y que está basado a su vez en Django.
Hasta hace muy poco tiempo, preparar un entorno de desarrollo y un proyecto mínimo basado en Satchmo era una tarea titánica, que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="right off" title="Tokyo International Forum" src="http://farm4.static.flickr.com/3056/2994703338_cf8a4a431c_m.jpg" alt="" width="160" height="240" /></p>
<p>Durante la última semana he estado trabajando en una tienda virtual basada en <a title="Satchmo" href="http://www.satchmoproject.com/" target="_blank">Satchmo</a>. Satchmo es un framework para la creación de tiendas virtuales web, y que está basado a su vez en <a title="Django" href="http://www.djangoproject.com/" target="_blank">Django</a>.</p>
<p>Hasta hace muy poco tiempo, preparar un entorno de desarrollo y un proyecto mínimo basado en Satchmo era una tarea titánica, que llevaba horas llenas de frustración y sufrimiento, durante las cuales la vida llegaba a no tener sentido y&#8230;en fin, ya me entendeis.</p>
<p>La situación ha cambiado radicalmente con la versión 0.9, liberada el pasado Octubre. Con esta nueva versión, la instalación de Satchmo se ha simplificado enormemente y la documentación ha mejorado notablemente. Todo esto ha hecho que, al menos en Ubuntu, la instalación se haya convertido en un simple proceso de 15 minutos, desde el comienzo hasta que puedes ver funcionando el proyecto mínimo para comenzar el desarrollo.</p>
<p>A continuación, y siguiendo con la vocación de servicio publico de este blog, detallaré los pasos para instalar un entorno de desarrollo con Satchmo. Las siguientes instrucciones se basan en Ubuntu, y han sido probadas en una máquina virtual con Ubuntu 8.04.3 LTS.</p>
<p>Coged papel y lápiz. Os espero.</p>
<p>El primer paso es instalar los paquetes necesarios para la instalación de Satchmo y todas sus dependencias.</p>
<p><code>sudo apt-get install python-setuptools python-dev build-essential python-imaging mercurial</code></p>
<p>A continuación instalaremos <a title="pip" href="http://pip.openplans.org/" target="_blank">pip</a>, <a title="virtualenv" href="http://virtualenv.openplans.org/" target="_blank">virtualenv</a>, <a title="virtualenvwrapper" href="http://www.doughellmann.com/projects/virtualenvwrapper/" target="_blank">virtualenvwrapper</a> y crearemos un virtualenv para nuestro entorno de desarrollo.</p>
<p><code>sudo easy_install pip<br />
sudo pip install virtualenv<br />
sudo pip install virtualenvwrapper<br />
mkdir ~/.virtualenvs<br />
source /usr/bin/virtualenvwrapper_bashrc<br />
mkvirtualenv satchmo<br />
</code></p>
<p>Añade la linea <code>source /usr/bin/virtualenvwrapper_bashrc</code> a tu .bashrc para tener virtualenvwrapper la próxima vez que te logees.</p>
<p>Si no conoces pip, virtualenv o virtualenvwrapper, te invito a que antes de seguir descubras que son, como funcionan, que ventajas ofrecen y por que son lo mejor desde el arroz con leche, en los siguientes articulos. Otros ya lo han explicado mejor de lo que yo lo haría.</p>
<ul>
<li><a title="Entorns de treball virtuals per Python" href="http://trespams.com/2009/02/12/entorns-de-treball-virtuals-python/" target="_blank">Entorns de treball virtuals per Python</a></li>
<li><a title="Working with virtualenv" href="http://arthurkoziel.com/2008/10/22/working-virtualenv/" target="_blank">Working with virtualenv</a></li>
<li><a title="Why I like pip" href="http://www.b-list.org/weblog/2008/dec/15/pip/" target="_blank">Why I like pip</a></li>
</ul>
<p>Esperaré aquí hasta que acabes. En serio.</p>
<p>Por último, solo queda instalar las dependencias y finalmente Satchmo.</p>
<p><code>pip install -r http://bitbucket.org/chris1610/satchmo/raw/tip/scripts/requirements.txt<br />
pip install -e hg+http://bitbucket.org/chris1610/satchmo/#egg=satchmo</code></p>
<p>Una vez terminado, solo resta crear un proyecto mínimo sobre el que comenzar a trabajar. Satchmo ya viene con un script que hace precisamente eso.</p>
<p><code>clonesatchmo.py --skel=/home/juan/.virtualenvs/satchmo/src/satchmo/satchmo/projects/skeleton</code></p>
<p>Por defecto, creará un proyecto llamado store en el directorio en el que te encuentres.</p>
<p>Ahora solo queda arrancar el servidor de desarrollo de Django para probar la tienda.</p>
<p><code>cd store<br />
python manage.py runserver</code></p>
<p>Seguro que has tardado menos de 15 minutos.</p>
<h4 style="font-size: 0.8em;">Imagen © <a href="http://www.flickr.com/photos/jamesjustin/">jamesjustin</a> Some Rights Reserved.</h4>
]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2010/01/23/instalacion-satchmo-comodos-pasos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Un verano muy movido</title>
		<link>http://morenosan.com/2008/09/06/un-verano-muy-movido/</link>
		<comments>http://morenosan.com/2008/09/06/un-verano-muy-movido/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 22:46:01 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://morenosan.com/2008/09/06/un-verano-muy-movido/</guid>
		<description><![CDATA[Mis fieles lectores (los dos), se habrán dado cuenta de que durante el verano, este blog, que nunca se ha sido un prodigio de actualizaciones, ha registrado exactamente 0 (cero) entradas. Y es que el verano ha sido muy movido, tanto en el plano familiar como laboral. En ambos casos todo han sido excelentes noticias, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://morenosan.com/wp-content/uploads/2008/09/natsu.jpg" ilo-full-src="http://morenosan.com/wp-content/uploads/2008/09/natsu.jpg" alt="Natsu" class="right off" />Mis fieles lectores (los dos), se habrán dado cuenta de que durante el verano, este blog, que nunca se ha sido un prodigio de actualizaciones, ha registrado exactamente 0 (cero) entradas. Y es que el verano ha sido muy movido, tanto en el plano familiar como laboral. En ambos casos todo han sido excelentes noticias, que han venido acompañadas de varios cambios mas o menos previstos. Todo ello ha provocado que casi no le haya quedado un momento de paz y tranquilidad a este que os escribe (a los dos).</p>
<p>Otros que han tenido un verano movido han sido los desarrolladores de <a href="http://www.djangoproject.com/" title="Django" target="_blank">Django</a>. Finalmente, después de más de tres años desde la publicación de su primera versión, y con unos últimos meses trabajando a un ritmo frenético, Django ha liberado su versión 1.0. Esta release marca un punto de inflexión importante, tanto para nosotros lo desarrolladores, que tenemos una API estabilizada, como para todos los que ven las versiones 0.x como arenas movedizas (y que en muchos casos son los que toman las decisiones). Lo cierto es que cuando Django fue publicado, ya era un framework muy potente, maduro y estable, y durante estos años solo ha hecho que mejorar en todos los aspectos.<br />
Por mi parte, solo puedo decir que después de mas de dos años usando la versión de desarrollo en más de una veintena de proyectos diferentes, Django es exactamente el framework web para perfeccionistas con deadlines que publicita su portada, y mucho mas. Desde aquí, solo me queda dar la enhorabuena a todos los que han hecho posible esta versión 1.0. ¡Muchas gracias!</p>
<p>Afortunadamente, entre tanto ajetreo, este verano he podido volver a disfrutar nuevamente de mi columnista favorito, el divertidísimo <a href="http://www.davebarry.com/" title="Dave Barry" target="_blank">Dave Barry</a>. Desde que hace unos años dejara de escribir su columna semanal en el <a href="http://www.miamiherald.com/living/columnists/dave-barry/" title="Miami Herald">Miami Herald</a>, Dave solo escribe en momentos muy puntuales, y este verano se está produciendo una conjunción de ellos de forma casi consecutiva. Gracias a las olimpiadas, y a las convenciones republicana y demócrata en Estados Unidos, durante las últimas semanas ha sido posible disfrutar de sus crónicas casi a diario. Menos mal que a mi otro columnista favorito, el gran <a href="http://blog.diariodemallorca.es/alazar" title="Matias Vallés">Matias Vallés</a>, se le puede leer regularmente sin tener que esperar a ningún acontecimiento en particular.</p>
<p>En resumen, este verano que ya termina ha sido inolvidable. Espero que en breve podamos volver a la programación habitual.</p>
<h4 style="font-size: 0.8em">Imagen ©<a href="http://flickr.com/photos/skyseeker//">skyseeker</a> Some Rights Reserved.</h4>
]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2008/09/06/un-verano-muy-movido/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Django snippets</title>
		<link>http://morenosan.com/2007/10/21/django-snippets/</link>
		<comments>http://morenosan.com/2007/10/21/django-snippets/#comments</comments>
		<pubDate>Sat, 20 Oct 2007 22:55:54 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://morenosan.com/2007/10/21/django-snippets/</guid>
		<description><![CDATA[Durante estos últimos meses, entre sorprendido y feliz, me estoy dedicando casi en exclusiva a realizar proyectos con Django. Sorprendido por haber abandonado temporalmente Java después de mas de cinco años de uso diario, y feliz por que  programar webs con Django y Python es simplemente un placer.
A la hora de programar con Django, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://morenosan.com/wp-content/uploads/2007/10/small.jpeg" alt="Snippets" class="right off" />Durante estos últimos meses, entre sorprendido y feliz, me estoy dedicando casi en exclusiva a realizar proyectos con Django. Sorprendido por haber abandonado temporalmente Java después de mas de cinco años de uso diario, y feliz por que  programar webs con Django y Python es simplemente un placer.<br />
A la hora de programar con Django, y aparte de la página oficial, el otro site que consulto casi a diario es <a href="http://www.djangosnippets.org/" title="Django snippets" target="_blank">Django snippets</a>.</p>
<p>Django snippets es un repositorio de snippets, pequeños trozos de código o recetas para realizar toda clase de funciones en Django, que recuerda mucho en su espíritu al <a href="http://www.activestate.com/ASPN/Python/Cookbook/" title="Python cookbook" target="_blank">Python cookbook</a>. La web ha sido creada por James Bennett, el artífice entre otras de la excelente <a href="http://www.b-list.org/" title="The B-List" target="_blank">The B-List</a>. En los pocos meses que lleva funcionando, ya hay cientos de snippets, muchos de ellos de una gran calidad y realmente útiles. Consultando djangosnippets te das cuenta de que una vez más se cumple la máxima de la programación según la cual, la mayoría de los problemas que te puedas llegar a encontrar, ya los han tenido otros antes que tu, y su solución es mucho mas elegante y mejor diseñada que la tuya. Es también es una forma amena y fácil de leer código de otros programadores, una práctica muy recomendable para cualquier desarrollador.</p>
<p>Durante los últimos meses he incluido múltiples snippets dentro de los proyectos en los que he ido trabajado. Los que listo a continuación son los que me son de más utilidad, y que reutilizo una y otra vez.</p>
<ul>
<li><a href="http://www.djangosnippets.org/snippets/85/" title="SSL Middleware" target="_blank">SSL Middleware</a> Permite configurar en el fichero url.py que direcciones deben ser accedidas a través de https.</li>
<li><a href="http://www.djangosnippets.org/snippets/428/" title="Logging Middleware" target="_blank">Logging Middleware</a> Middleware que introduce un logger en cada request, de modo que se puede tener accesible en todas las vistas de la aplicación.</li>
<li><a href="http://www.djangosnippets.org/snippets/222/" title="Wizard class" target="_blank">Wizard class</a> Clase que encapsula la funcionalidad de un wizard.</li>
<li><a href="http://www.djangosnippets.org/snippets/96/" title="SMTP sink server" target="_blank">SMTP sink server</a> Simula un servidor de correo, al que podemos enviar mensajes a través de SMTP. Impagable para comprobar los mails que se envían desde django sin tener que estar consultando constantemente el correo.</li>
<li><a href="http://www.djangosnippets.org/snippets/73/" title="Paginator tag" target="_blank">Paginator tag</a> Un tag que simplifica la paginación de datos.</li>
</ul>
<p>Es en proyectos como este donde se aprecia la verdadera fuerza y generosidad de la comunidad de usuarios de django.</p>
<h4 style="font-size: 0.8em">Imagen © <a href="http://flickr.com/photos/muzzanese/">muzzanese</a>. Some Rights Reserved.</h4>
]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2007/10/21/django-snippets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django 0.96</title>
		<link>http://morenosan.com/2007/03/25/django-096/</link>
		<comments>http://morenosan.com/2007/03/25/django-096/#comments</comments>
		<pubDate>Sat, 24 Mar 2007 23:29:55 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://morenosan.com/?p=11</guid>
		<description><![CDATA[El pasado 23 de Marzo se publicó la versión 0.96 de Django. Esta nueva versión estabiliza las nuevas características que se introdujeron el la versión 0.95, ademas de añadir varias funcionalidades nuevas. De todas ellas la más reseñable es sin duda newforms, la nueva librería de creación y validación de forms. La antigua librería continua [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Ameyoko" class="right off" id="image13" src="http://morenosan.com/wp-content/uploads/2007/03/ameyoko.jpg" />El pasado 23 de Marzo se publicó la versión 0.96 de Django. Esta nueva versión estabiliza las nuevas características que se introdujeron el la versión 0.95, ademas de añadir varias funcionalidades nuevas. De todas ellas la más reseñable es sin duda newforms, la nueva librería de creación y validación de forms. La antigua librería continua presente en esta versión, pero a partir de la siguiente será eliminada.<br />
En un apunte anterior había comentado como carencias de newforms respecto a la antigua librería, la integración con el modelos de datos y la documentación. Desde entonces, la integración con el modelo de datos ha mejorado sustancialmente gracias a las funciones form_for_model y form_for_instance. Sin empbargo, la documentación sigue estando incompleta y sin ir mas lejos form_for_model y form_for_instance continúan indocumentadas, asi como el proceso de creación de validaciones personalizadas.<br />
Sin duda y habida cuenta de la excelente documentación de la que hace gala Django, el problema es temporal y a buen seguro que en poco tiempo tendremos disponible tanto la documentación como el capitulo 7 del <a title="Django book" href="http://www.djangobook.com/">django book</a> que hace referencia al procesado de forms.<br />
Mientras tanto, siempre nos queda <a title="django snippets" href="http://www.djangosnippets.org/">django snippets</a> y por supuesto el código fuente <img src='http://morenosan.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h4 style="font-size: 0.8em">Imagen © <a href="http://flickr.com/photos/zrahen/">rahen z</a>. Some Rights Reserved.</h4>
]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2007/03/25/django-096/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Newforms en Django</title>
		<link>http://morenosan.com/2007/01/28/newforms-en-django/</link>
		<comments>http://morenosan.com/2007/01/28/newforms-en-django/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 09:47:19 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://morenosan.com/?p=9</guid>
		<description><![CDATA[Desde que, hace algo más de año y medio se dio a conocer, Django se ha convertido en mi framework favorito para la creación de aplicaciones web. Lo he utilizado tanto en proyectos personales como profesionales y gracias a su potencia y sencillez siempre ha sido un placer trabajar con el. No dudaría en recomendarlo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="right off" alt="oldandnew" id="image10" src="http://morenosan.com/wp-content/uploads/2007/01/newold.jpg" />Desde que, hace algo más de año y medio se dio a conocer, Django se ha convertido en mi framework favorito para la creación de aplicaciones web. Lo he utilizado tanto en proyectos personales como profesionales y gracias a su potencia y sencillez siempre ha sido un placer trabajar con el. No dudaría en recomendarlo para la creación de casi cualquier aplicación web.</p>
<p>Aunque Django es un framework maduro y con multitud de webs, grandes y pequeñas, que lo utilizan, su API, tal y como da a entender la numeración de su versión actual, la 0.95.1, no está totalmente cerrada. En estos días, uno de los principales focos de desarrollo es el modulo newforms, la nueva librería para la creación y validación de forms que sustituye a la que se venia usando hasta ahora. El problema es que la anterior librería ha sido deprecada y desde su misma <a target="_blank" href="http://www.djangoproject.com/documentation/forms/">documentación</a> se anima encarecidamente a no utilizarla para proyectos nuevos, dejándonos con una librería que aunque mejora en muchos aspectos a la anterior, tiene también algunas carencias como falta de funcionalidad respecto a la librería anterior y escasa documentación.</p>
<p>Por poner un ejemplo, una de las características que más me gustan de Django es la creación automática de forms a partir de los models de la aplicación. El tipo de campo de la form así como las validaciones que se le aplican se crean de acuerdo con el model. Un campo numérico en el model se traduce en un campo de texto en la form, cuyo valor se valida  al enviar la form, las <font size="-1">foreign keys</font> aparecen como pulldowns, etcétera. Es <a title="Don't Repeat Yourself" href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY</a>, uno de los mantras de Django, en estado puro. Y aunque newforms permite algo similar, no llega, de momento, al grado de integración con el model que tiene la antigua librería.</p>
<p>Es paradójico que un usuario que descubra estos días Django encuentre menos funcionalidad en el framework que si lo hubiese hecho hace unas semanas. Al menos temporalmente y a efectos prácticos, las &#8220;features&#8221; de Django han disminuido con el paso del tiempo.</p>
<p>De todas formas, y como en el resto del framework, el desarrollo de newforms es continuo, por no decir frenético,  y las mejoras visibles casi a diario, así que no me cabe duda de que está situación es temporal y que estas carencias quedarán resueltas en poco tiempo.</p>
<h4 style="font-size: 0.8em">Imagen © <a href="http://flickr.com/photos/willposh/"> willposh</a>. Some Rights Reserved.</h4>
]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2007/01/28/newforms-en-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
