<?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>Fitoria &#187; django</title>
	<atom:link href="http://fitoria.net/category/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://fitoria.net</link>
	<description></description>
	<lastBuildDate>Wed, 28 Dec 2011 00:17:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Django Suite III: Usando virtualenv y pip.</title>
		<link>http://fitoria.net/2011/11/django-suite-iii-usand-virtualenv-y-pip/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-suite-iii-usand-virtualenv-y-pip</link>
		<comments>http://fitoria.net/2011/11/django-suite-iii-usand-virtualenv-y-pip/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 11:30:14 +0000</pubDate>
		<dc:creator>Adolfo Fitoria</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://fitoria.net/?p=642</guid>
		<description><![CDATA[Tercera entrega de la serie sobre Django, esta vez no hablaré del framework en si, sino de un par de herramientas básicas del ecosistema de Python para ayudarnos a ser mas ordenados a la hora de desarrollar proyectos. Virtualenv es una &#8230; <a href="http://fitoria.net/2011/11/django-suite-iii-usand-virtualenv-y-pip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tercera entrega de la serie sobre Django, esta vez no hablaré del framework en si, sino de un par de herramientas básicas del ecosistema de Python para ayudarnos a ser mas ordenados a la hora de desarrollar proyectos.</p>
<p><a href="http://pypi.python.org/pypi/virtualenv" target="_blank"><strong>Virtualenv</strong></a> es una herramienta que nos ayuda a crear ambientes aislados para Python en palabras mas simples instala las bibliotecas e intérprete en una carpeta separada a la de nuestra instalación en el sistema operativo, la ventajas están en que nos provee una manera fácil, rápida, segura y reproducible de hacer desarollo y pruebas de diversas aplicaciones.</p>
<p>Por otra parte <strong><a href="http://pypi.python.org/pypi/pip" target="_blank">pip</a> </strong>es una herramienta para instalar paquetes de Python desde el <strong><a href="http://pypi.python.org/pypi" target="_blank">Python Package Index</a></strong> que es el repositorio comunitario de paquetes. En conjunto con virtualenv, pip nos ayuda a tener todo organizado y limpio.</p>
<h2>Usando Virtualenv</h2>
<p>Primeramente lo instalamos con nuestro manejador de paquetes favorito, en caso de ubuntu el paquete se llama &#8220;python-virtualenv&#8221; luego procedemos a crear nuestro primer ambiente virtual.</p>
<p><code><br />
virtualenv primer_ambiente --no-site-packages<br />
</code></p>
<p>Donde <em>primer_ambiente</em> es el nombre que deseamos ponerle y<em> &#8211;no-site-packages</em> es un parámetro para que se cree un ambiente totalmente limpio tal y como fuera una instalación básica de python sin ninguna biblioteca extra. La ejecución de este comando creará una carpeta en el directorio en donde lo ejecutamos, recomiendo crear en su directorio $HOME una carpeta llamada virtualenvs para guardar todos los que vayamos creando en un solo lugar. Para activarlo hacemos lo siguiente:</p>
<p><code><br />
source /path/a/primer_ambiente/bin/activate</code></p>
<p>Sabremos que está activo por que en nuestra consola aparecerá (primer_ambiente) en el prompt, ya en nuestro ambiente podremos usar pip para confirugrarlo a nuestro gusto.</p>
<p>Para volver a la normalidad usamos el comando:<br />
<code><br />
deactivate</code></p>
<h2>Usando pip</h2>
<p>La función principal de pip: instalar, actualizar y eliminar paquetes nos enfocaremos en esas tres funciones.</p>
<p><strong>Instalar:</strong></p>
<p><code> pip install django<br />
pip install django==1.3.1<br />
</code></p>
<p>La primera línea instalaría django en la versión mas actual del pypi, mientras que en la segunda con el operador de igualdad podemos forzar la instalación de una versión específica de django o cualquier paquete requerido, esto es muy útil a la hora de tener incompatibilidades o <a href="http://es.wikipedia.org/wiki/C%C3%B3digo_heredado" target="_blank">código legacy.</a></p>
<p><strong>Desinstalar</strong></p>
<p><code> pip uninstall django </code></p>
<p>Simplemente elimina el paquete especificado.</p>
<p><strong>Actualizar</strong></p>
<p><code>pip install django --upgrade</code></p>
<p>Instalará la versión mas actual del paquete ya instalado previamente.</p>
<p><strong>Congelar</strong></p>
<p><code>pip freeze &gt; requirements.txt </code></p>
<p>Esto produce un <a href="http://www.pip-installer.org/en/latest/requirement-format.html" target="_blank">archivo de requemientos en el formato que pip</a> puede entender, el archivo de requerimientos detalla las dependencias que tiene un ambiente, su formato acepta tanto origenes del pypi, paquetes en formato tar.gz repositorios en git, mercurial y svn. Comúnmente nos encontraremos de un requirements.txt en muchos proyectos.</p>
<p>Si ejecutamos este comando  en primer_ambiente seguramente tendremos un par de requerimientos, django que hemos instalado manualmente y distribute, que viene por defecto.</p>
<p><strong>Instalar desde un archivo de requerimiento.</strong></p>
<p><code> pip install -r requirements.txt </code></p>
<p>Esto leerá el archivo de requerimientos y lo instalará en el ambiente actual.</p>
<h2>¿De qué nos sirve todo esto?</h2>
<p>Simple: <strong>orden, orden, orden!</strong> Ventajas de usar virtualenv + pip:</p>
<ol>
<li>reproducible</li>
<li>fácil de compartir por medio del archivo de requerimiento</li>
<li>no afecta los paquetes del sistema</li>
<li>nos ayuda a la hora de hacer deployments con django.</li>
</ol>
<div>Ahora repitan conmigo: &#8220;todo proyecto de django deberá tener su propio virtualenv&#8221;</div>
<div>Lectura extra:</div>
<div><a href="http://www.doughellmann.com/projects/virtualenvwrapper" target="_blank">Virtualenvwrapper</a>: un interesante proyecto que provee comandos mas fáciles de recordar para crear, usar y activar virtualenvs.</div>
]]></content:encoded>
			<wfw:commentRss>http://fitoria.net/2011/11/django-suite-iii-usand-virtualenv-y-pip/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Django Suite II: Configurando nuestro proyecto de manera correcta.</title>
		<link>http://fitoria.net/2011/11/django-suite-ii-configurando-nuestro-proyecto-de-manera-correcta/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-suite-ii-configurando-nuestro-proyecto-de-manera-correcta</link>
		<comments>http://fitoria.net/2011/11/django-suite-ii-configurando-nuestro-proyecto-de-manera-correcta/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 23:56:30 +0000</pubDate>
		<dc:creator>Adolfo Fitoria</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[planeta]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://fitoria.net/?p=618</guid>
		<description><![CDATA[En esta entrada abordaremos un tema importante: la configuración del proyecto. Como dije en la entrada anterior, en configuraciones tampoco hay una manera definitiva de hacer las cosas ya que la flexibilidad de Django nos lo permite. Django usa archivos &#8230; <a href="http://fitoria.net/2011/11/django-suite-ii-configurando-nuestro-proyecto-de-manera-correcta/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En esta entrada abordaremos un tema importante: la <strong>configuración </strong>del proyecto. Como dije en la entrada anterior, en configuraciones tampoco hay una manera definitiva de hacer las cosas ya que la flexibilidad de Django nos lo permite.</p>
<p>Django usa archivos Python para guardar configuraciones, aprovecha la manera de trabajar del lenguaje para hacer archivos de configuración fáciles de leer, extender y utilizar dentro de nuestros proyectos.</p>
<p>Normalmente al iniciar una aplicación creamos un proyecto en blanco con el <a href="https://docs.djangoproject.com/en/1.3/ref/django-admin/#startproject-projectname" target="_blank">comando startproject</a> que nos crea una carpeta con los archivos necesarios para iniciar.</p>
<p>Por defecto estas configuraciones<a href="https://docs.djangoproject.com/en/1.3/ref/settings/" target="_blank"> tienen ciertos valores</a> de los cuales normalmente nos molestaremos en cambiar sólo algunas, como configuración de bases de datos, ubicación de archivos estáticos y servidor de correo.</p>
<p>Acá algunos trucos para hacer estas configuraciones de manera dinámica y distribuibles para usarse en sistemas de control de versiones:</p>
<h2>Separación del archivo settings.py</h2>
<p>Este archivo contiene muchas veces datos sensibles que no pueden  ser publicados o simplemente varían de una estación de trabajo a otra, por lo que conviene separarlo con un archivo extra que por convención lo llamamos<strong>&#8220;settings_local.py&#8221;</strong> acá deberán ir estas configuraciones:</p>
<ul>
<li>DATABASES</li>
<li>ADMINS</li>
<li>DEBUG</li>
<li>TEMPLATE_DEBUG</li>
<li>SECRET_KEY (si lo vas a hacer código libre y público)</li>
<li>Claves privadas en caso de usarse( ej. alguna clave de API de terceros)</li>
<li>Configuraciones de correo.</li>
</ul>
<div><a href="https://gist.github.com/1381110" target="_blank">Ejemplo:</a></div>
<p><script type="text/javascript" src="https://gist.github.com/1381110.js">// <![CDATA[</p>
<p>// ]]&gt;</script><br />
Como prodrán ver acá incluyo una configuración extra llamada <strong>PROJECT_DIR</strong> que usaremos luego. Para mandar a llamar este nuevo archivo en el inicio de nuestros settings.py incluimos la siguiente línea:</p>
<pre>from settings_local import *</pre>
<h2>Dinamizando las rutas de archivos estáticos.</h2>
<p>Django requiere rutas de archivos para cargar archivos estáticos y definir donde estarán nuestras plantillas, para hacer esto de manera dinámica y distribuible usamos un poco de Python. En el archivo settings_local definimos PROJECT_DIR, que no es mas que la ruta del directorio donde se encuentra dicho archivo, a partir de éste armaremos MEDIA_ROOT, TEMPLATE_DIRS y STATIC_ROOT</p>
<p><a href="https://gist.github.com/1381150" target="_blank">Ejemplo:</a><br />
<script type="text/javascript" src="https://gist.github.com/1381150.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<h2>gitignore</h2>
<p>Si vas a usar git u otro sistema de control de versiones recomiendo agregar ciertos archivos al ignore de tu SCM para git tengo un <a href="https://gist.github.com/1381237" target="_blank">ejemplo acá</a> será similar para otros sistemas.</p>
<h2>Presentando django-initkit.</h2>
<p>Para no hacer todo estas configuraciones cada vez que tengamos que iniciar un proyecto he creado <a href="https://github.com/fitoria/django-initkit" target="_blank">django-initkit</a> que es un proyecto simple que sobrecarga el comando startproject para hacer automáticamente todo lo que describí en este post. Para instalarlo puedes hacerlo desde <a href="http://pypi.python.org/pypi/django-initkit/0.0.1" target="_blank">Pypi</a> (pip install django-initkit) o haciendo <a href="https://github.com/fitoria/django-initkit" target="_blank">checkout desde github</a>.</p>
<p>Su uso es igual a django-admin.py, nada más que el nombre del comando es django_initkit.py</p>
<p>Ejemplo:</p>
<pre>django_initkit.py startproject foo</pre>
<p>Espero que les haya gustado el post de hoy, pueden sugerir mas temas en los comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://fitoria.net/2011/11/django-suite-ii-configurando-nuestro-proyecto-de-manera-correcta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django Suite I: Iniciar con Django.</title>
		<link>http://fitoria.net/2011/11/django-suite-i-iniciar-con-django/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-suite-i-iniciar-con-django</link>
		<comments>http://fitoria.net/2011/11/django-suite-i-iniciar-con-django/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 13:57:03 +0000</pubDate>
		<dc:creator>Adolfo Fitoria</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[planeta]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[softwarelibre]]></category>

		<guid isPermaLink="false">http://fitoria.net/?p=597</guid>
		<description><![CDATA[Esta es una parte de una serie de post semanales que estaré dedicando a distintos temas de Django. El titulo Django Suite es un pequeño juego de palabras ya que el nombre del framework fue inspirado por el gran guitarrista &#8230; <a href="http://fitoria.net/2011/11/django-suite-i-iniciar-con-django/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Esta es una parte de una serie de post semanales que estaré dedicando a distintos temas de Django. El titulo <strong>Django Suite </strong>es un pequeño juego de palabras ya que el nombre del framework fue inspirado por el gran guitarrista de jazz <a href="http://es.wikipedia.org/wiki/Django_Reinhardt" target="_blank">Django Reinhardt</a> y <a href="http://es.wikipedia.org/wiki/Suite" target="_blank">suite</a> que se define como un tipo de pieza musical compuesta por varios movimientos breves.</p>
<p style="text-align: justify;">Para el primer movimiento empezaré con lo básico el inicio<strong><em>,</em><em> no voy a realizar un tutorial</em></strong> de como iniciar en Django por que hay <strong><a href="http://lmgtfy.com/?q=tutorial+django" target="_blank">muchos ya en internet</a></strong> que son útiles pero debido a que muchas personas me preguntan cual es la mejor manera de iniciar con Django hago este post para guiarlos un poco sobre lo que las guías dan por hecho pero que nos pueden hacer perder algo de tiempo buscando por ahí.</p>
<p style="text-align: justify;">Sinceramente no hay bala de plata para lograr <a href="http://djangopony.com/" target="_blank">cabalgar al pony</a> sino por que el proceso de aprendizaje varía de quien en quien, lo que si puedo decir es que Django es uno de los proyectos <em>mejor documentados </em>que existen, casi todo el framework menos algunas funciones internas muy poco usadas están descritas en <a href="https://docs.djangoproject.com/en/1.3/">https://docs.djangoproject.com/</a> en la dirección anterior puedes navegar fácilmente todos los temas.</p>
<p style="text-align: justify;">La documentación es muy buena pero no te servirá de nada si no tienes un conocimiento básico de Python lo bueno es que existen libros como <a href="http://learnpythonthehardway.com/" target="_blank">este</a> y tutoriales completos como <a href="http://mundogeek.net/archivos/2008/05/06/el-tutorial-de-python-en-pdf/" target="_blank">este otro</a>. Cosas a tener muy en cuenta para conocer en python primero:</p>
<ol style="text-align: justify;">
<li>Definición, uso y construcción de <a href="http://docs.python.org/tutorial/modules.html" target="_blank">módulos en Python.</a></li>
<li>Definición y uso de funciones del tipo genérica, <a href="http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/" target="_blank">uso de parámetros *args y *kwargs</a>.</li>
<li>Uso y construcción de <a href="http://docs.python.org/library/re.html" target="_blank">expresiones regulares básicas.</a></li>
<li>Programación orientada a objetos y herencia de clases.</li>
<li>Como instalar paquetes de python desde <a href="http://pypi.python.org/pypi" target="_blank">PyPi</a>.</li>
</ol>
<div style="text-align: justify;">Django depende bastante de estos cuatro puntos anteriores, por ejemplo sin conocer mucho de expresiones regulares no podrán construir urls.</div>
<h2 style="text-align: justify;">Herramientas</h2>
<div style="text-align: justify;">Todo lo que necesitas es el interprete de python, django instalado, un navegador web y tu editor de texto favorito. Existen también algunos IDE con soporte a Django como <a href="http://wingware.com/" target="_blank">Wingware</a> y soporte para Python en <a href="http://www.eclipse.org/" target="_blank">Eclipse</a> trabaja con lo que te sientas mas cómodo.</div>
<div style="text-align: justify;">Para motor de base de datos puedes elegir Postgres, MySQL, SQLite3, SQL Server y Oracle igual que el punto anterior, usa tu favorito.</div>
<div style="text-align: justify;">
<h2>Modo de Trabajo</h2>
<p>Tienes que tomar en cuenta que Django es un framework que usa el <a href="http://es.wikipedia.org/wiki/Modelo_Vista_Controlador" target="_blank">patrón MVC</a> por lo que preferiblemente y por el bien de tu código debes de separar muy bien la lógica, presentación y datos de tu aplicación, si ves que esto se mezcla <em><strong>estás haciendo algo mal</strong></em>.</p>
<p>Django es <em><strong>modular </strong></em>e introduce el concepto de &#8220;aplicaciones plugables&#8221; que no son mas que módulos de Python encapsulando una parte de funcionalidad de tu aplicación web. Ejemplo práctico: Tenemos una página con un foro, un blog y una galería de fotos nuestro proyecto tendría como mínimo tres aplicaciones django separando la sección de blog, galería y foro. Este tipo de diseño hacen que existan mucho código libre de aplicaciones que simplemente conectamos con nuestro proyecto, si tiene nombre es muy probable que haya una aplicación de django para eso!</p>
<p>Si no me crees ve a <a href="http://djangopackages.com/">http://djangopackages.com/</a> y busca las múltiples alternativas para resolver un problema que tengas. Normalmente en mis proyectos uso al menos una aplicación creada por terceros y eso nos facilita la vida tremendamente. En la práctica gracias a esto podemos hacer un sitio con registro de usuarios, confirmación de correo, manejo de avatares, perfiles de usuarios, blog, menús dinámicos en <em><strong>menos de media hora</strong></em>, sin tomar en cuenta el tiempo que nos llevaría realizar el diseño en html.</p>
<p>Django también provee un motor de plantillas sencillo de entender pero a la vez muy poderoso que permite separar los roles entre el frontend y backend, haciendo mas sencillo el trabajo en equipos.</p>
<h2>Mantenerse al día</h2>
<p>Como todo en la vida y mas en el mundo de la programación y tecnología es una necesidad mantenerse informado con lo último. Acá una pequeña lista de sitios que pueden ayudar:</p>
<ul>
<li><a href="https://www.djangoproject.com/community/blogs/">https://www.djangoproject.com/community/blogs/</a></li>
<li><a href="http://django.es/comunidad/">http://django.es/comunidad/</a></li>
<li><a href="http://reddit.com/r/django" target="_blank">http://reddit.com/r/django</a></li>
<li><a href="http://www.askthepony.com/blog/">http://www.askthepony.com/blog/</a></li>
<li><a href="http://django.es/blog/">http://django.es/blog/</a></li>
</ul>
<div>Te invito a probarlo y te aseguro que te engancharás enseguida, si le dedicas algo de tiempo podrías comenzar a hacer sitios web completamente funcionales en menos de una semana.</div>
<div>El fin.</div>
</div>
<div style="text-align: justify;">PD. Puedes dejar sugerencia sobre nuevos temas en los comentarios.</div>
]]></content:encoded>
			<wfw:commentRss>http://fitoria.net/2011/11/django-suite-i-iniciar-con-django/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Taller Django!</title>
		<link>http://fitoria.net/2010/10/taller-django/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=taller-django</link>
		<comments>http://fitoria.net/2010/10/taller-django/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 04:16:49 +0000</pubDate>
		<dc:creator>Adolfo Fitoria</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[planeta]]></category>

		<guid isPermaLink="false">http://fitoria.net/?p=567</guid>
		<description><![CDATA[Hoy se llevó a cabo un el primer taller sobre Django en Nicaragua, la cita se dió en SIMAS y estuve compartiendo con los asistentes sobre como hacer una pequeña aplicación de blog en este framework y la experiencia de SIMAS. &#8230; <a href="http://fitoria.net/2010/10/taller-django/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoy se llevó a cabo un el primer taller sobre <a href="http://www.djangoproject.com/" target="_blank"><strong>Django</strong></a> en Nicaragua, la cita se dió en <a href="http://simas.org.ni/" target="_blank"><strong>SIMAS</strong></a> y estuve compartiendo con los asistentes sobre como hacer una pequeña aplicación de blog en este framework y la <a href="http://www.linuxjournal.com/content/nicaragua-builds-innovative-agricultural-information-system-using-open-source-software" target="_blank">experiencia de SIMAS</a>. Acá les dejo la presentación que utilicé:</p>
<div id="__ss_5409708" style="width: 425px;"><strong><a title="Django" href="http://www.slideshare.net/AdolfoFitoria/django-5409708">Django</a></strong><object id="__sse5409708" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=adolfofitoria-django-101010234831-phpapp02&amp;stripped_title=django-5409708&amp;userName=AdolfoFitoria" /><param name="name" value="__sse5409708" /><param name="allowfullscreen" value="true" /><embed id="__sse5409708" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=adolfofitoria-django-101010234831-phpapp02&amp;stripped_title=django-5409708&amp;userName=AdolfoFitoria" name="__sse5409708" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/AdolfoFitoria">Adolfo Fitoria</a>.</div>
<div style="padding: 5px 0 12px;">Hay algunas <a href="http://www.facebook.com/album.php?aid=550974&amp;id=310311545047" target="_blank">fotos haciendo click acá</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://fitoria.net/2010/10/taller-django/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Django template filter para obtener thumbnails de youtube.</title>
		<link>http://fitoria.net/2010/10/django-template-filter-para-obtener-thumbnails-de-youtube/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=django-template-filter-para-obtener-thumbnails-de-youtube</link>
		<comments>http://fitoria.net/2010/10/django-template-filter-para-obtener-thumbnails-de-youtube/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 17:22:15 +0000</pubDate>
		<dc:creator>Adolfo Fitoria</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[planeta]]></category>
		<category><![CDATA[softwarelibre]]></category>

		<guid isPermaLink="false">http://fitoria.net/?p=560</guid>
		<description><![CDATA[Acá les dejo un Django template filter para obtener el thumbnail de un video de youtube a partir de su url, ejemplo de uso: &#60;img src="{{video.url&#124;youthumbnail: 's'}}"/&#62; Tiene dos parámetros de tamaño &#8216;s&#8217; para un thumbnail pequeño y &#8216;l&#8217; para &#8230; <a href="http://fitoria.net/2010/10/django-template-filter-para-obtener-thumbnails-de-youtube/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Acá les dejo un Django template filter para obtener el thumbnail de un video de youtube a partir de su url, ejemplo de uso:</p>
<pre><span style="font-family: monospace;">&lt;img src="{{video.url|youthumbnail: 's'}}"/&gt;</span></pre>
<p>Tiene dos parámetros de tamaño &#8216;s&#8217; para un thumbnail pequeño y &#8216;l&#8217; para un thumbnail grande.</p>
<p><script src="http://gist.github.com/630042.js?file=youthumb.py"></script></p>
<p><a href="http://djangosnippets.org/snippets/2234/">Ver en DjangoSnippets</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fitoria.net/2010/10/django-template-filter-para-obtener-thumbnails-de-youtube/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Cómo agregar editores HTML al django admin?</title>
		<link>http://fitoria.net/2009/05/%c2%bfcomo-agregar-editores-html-al-django-admin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25c2%25bfcomo-agregar-editores-html-al-django-admin</link>
		<comments>http://fitoria.net/2009/05/%c2%bfcomo-agregar-editores-html-al-django-admin/#comments</comments>
		<pubDate>Tue, 12 May 2009 02:06:22 +0000</pubDate>
		<dc:creator>Adolfo Fitoria</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[planeta]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[softwarelibre]]></category>

		<guid isPermaLink="false">http://fitoria.net/?p=437</guid>
		<description><![CDATA[Django trae una feature  que es simplemente genial: interfaz administrativa generada automáticamente como parte del framework. Esta interfaz ahorra mucho tiempo de desarrollo el cual podés usar para dejar mas bonita tu aplicación Django. Esta interfaz se puede customizar hasta &#8230; <a href="http://fitoria.net/2009/05/%c2%bfcomo-agregar-editores-html-al-django-admin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://djangoproject.com" target="_blank">Django</a> trae una feature  que es simplemente genial: <a href="http://docs.djangoproject.com/en/dev/ref/contrib/admin/" target="_blank"><strong><em>interfaz administrativa generada automáticamente</em></strong></a> como parte del framework. Esta interfaz ahorra mucho tiempo de desarrollo el cual podés usar para dejar mas bonita tu aplicación Django. Esta interfaz se puede customizar hasta cierto punto pero desgraciadamente no trae un editor de <a href="http://es.wikipedia.org/wiki/C%C3%B3digo_HTML">HTML</a> <a href="http://es.wikipedia.org/wiki/WYSIWYG">WYSIWYG </a>bonito de esos que se usan para poner un post en un blog o foro que permiten que alguien sin conocimientos de HTML pueda dar estilo a lo que escribe de manera sencilla y parecido a una suite ofimática.</p>
<p>Para esto tenemos disponibles una <a href="http://stackoverflow.com/questions/828004/cms-wysiwyg-for-dummies/" target="_blank">gran cantidad</a> de editores hechos en <a href="http://es.wikipedia.org/wiki/Javascript" target="_blank">javascript </a>libres y gratuitos disponibles en la red. En este caso usaremos mi preferido <a href="http://tinymce.moxiecode.com/" target="_blank">TinyMCE</a> el cual es muy popular y es el editor por defecto de <a href="http://wordpress.org">WordPress</a>. Este editor funciona con los campos definidos como <a href="http://docs.djangoproject.com/en/dev/ref/models/fields/#textfield" target="_blank">TextField</a></p>
<p><strong>Paso 1</strong>: <a href="http://prdownloads.sourceforge.net/tinymce/tinymce_3_2_3_1.zip?download" target="_blank">Bajar TinyMCE</a></p>
<p><strong>Paso 2.</strong> En un proyecto de Django agregar la carpeta de TinyMCE a la locación donde guarden su javascript</p>
<p><strong>Paso 3.</strong> Agregar el <a href="http://gist.github.com/110258">siguiente archivo</a> para configurar el aspecto dentro de una carpeta llamada editores (o como quieran ponerle) en la misma ubicación del paso 2.<br />
<script src="http://gist.github.com/110258.js"></script> <strong>Paso 4.</strong> En el <a href="http://gist.github.com/110262">admin.py</a> de la aplicación en la cual desean tener el editor hacer algo como esto: (ver comentarios) <script src="http://gist.github.com/110262.js"></script><br />
<strong>Paso 5.</strong> Probarlo!!! y si hicieron todo bien sale asi:</p>
<p style="text-align: center;"><a href="http://fitoria.net/wp-content/uploads/2009/05/tinymcedjango.png"><img class="aligncenter size-full wp-image-439" title="tinymcedjango" src="http://fitoria.net/wp-content/uploads/2009/05/tinymcedjango.png" alt="tinymcedjango" width="541" height="189" /></a><a href="https://dl.getdropbox.com/u/611460/django-tinymce.zip" target="_blank">Bajar projecto de Django de demostración</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fitoria.net/2009/05/%c2%bfcomo-agregar-editores-html-al-django-admin/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

