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

	<item>
	<title>Django: presentación, introducción y ejemplo de desarrollo</title>
	<author>Software Libre</author>
	<link>http://www.softwarelibre.net/django_presentaci%C3%B3n_introducci%C3%B3n_y_ejemplo_de_desarrollo</link>
	<guid>http://www.softwarelibre.net/django_presentaci%C3%B3n_introducci%C3%B3n_y_ejemplo_de_desarrollo</guid>
	<pubDate>Thu, 28 Jan 2010 00:00:00 +0100</pubDate>
	<description>&lt;a target=&quot;_blank&quot; href=&quot;http://m.menea.me/imkb&quot; class=&quot;external-link&quot;&gt;
&lt;p&gt;Fuente: &lt;a href=&quot;http://m.menea.me/imkb&quot;&gt;m.menea.me&lt;/a&gt;&lt;/p&gt;</description>
	</item>

	<item>
	<title>New Years Python meme</title>
	<author>Ovnicraft</author>
	<link>http://ovnicraft.wordpress.com/2009/12/30/new-years-python-meme/</link>
	<guid>http://ovnicraft.wordpress.com/2009/12/30/new-years-python-meme/</guid>
	<pubDate>Thu, 31 Dec 2009 00:00:00 +0100</pubDate>
	<description>Here’s a short, 5 questions, 2009 Python meme. Copy-paste the questions, and blog your answers ! 1. What&amp;#8217;s the coolest Python application, framework, or library you have discovered in 2009? OpenObject. This is the best framework, really i discovered at the 2008&amp;#8242;s end, so i create many modules about Enterprise applications, and i did some &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ovnicraft.wordpress.com&amp;blog=5082674&amp;post=167&amp;subd=ovnicraft&amp;ref=&amp;feed=1&quot; /&gt;</description>
	</item>

	<item>
	<title>Inicio en GeoDjango</title>
	<author>Ovnicraft</author>
	<link>http://ovnicraft.wordpress.com/2009/12/25/restful-en-django/</link>
	<guid>http://ovnicraft.wordpress.com/2009/12/25/restful-en-django/</guid>
	<pubDate>Fri, 25 Dec 2009 00:00:00 +0100</pubDate>
	<description>Estoy empezando un app GIS con geodjango, realmente es un framework increible para este tipo de aplicaciones, y para empezar escribi un pequeno ejemplo con los centros poblados de mi pais.
Las herramientas que se necesitan:
GeoDjango (esta incluido en el codigo de django)
PostGIS (revisar las dependencias)
Algo importante para resaltar es la herramienta ogrinfo ya que con [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ovnicraft.wordpress.com&amp;blog=5082674&amp;post=153&amp;subd=ovnicraft&amp;ref=&amp;feed=1&quot; /&gt;</description>
	</item>

	<item>
	<title>Atajo para búsquedas en la documentacion de django</title>
	<author>Luis Montiel</author>
	<link>http://luismontiel.com/blog/2009/sep/26/atajo-para-busquedas-en-la-documentacion-de-django/</link>
	<guid>http://luismontiel.com/blog/2009/sep/26/atajo-para-busquedas-en-la-documentacion-de-django/</guid>
	<pubDate>Sat, 26 Sep 2009 00:00:00 +0200</pubDate>
	<description>Para los que constantemente se la pasan recurriendo a la documentación de django y usan firefox o chrome/chromium, esto les puede ahorrar unos cuantos segundos: - Navegamos a http://docs.djangoproject.com/en/dev/ &lt;center&gt;![Alt text](/djangoblog/media/img/weblog/django-search1.png)&lt;/center&gt; - Damos clic derecho en la barra de búsqueda y seleccionamos la opción: &quot;Add a keyword for this search&quot;, ...</description>
	</item>

	<item>
	<title>Primeros pasos con geodjango</title>
	<author>pyAutoservicio</author>
	<link>http://pyautoservicio.blogspot.com/2009/08/primeros-pasos-con-geodjango.html</link>
	<guid>http://pyautoservicio.blogspot.com/2009/08/primeros-pasos-con-geodjango.html</guid>
	<pubDate>Sun, 30 Aug 2009 00:00:00 +0200</pubDate>
	<description>&lt;div&gt;&lt;span&gt;Este es un minitutorial &quot;expreso&quot; para probar geodjango en debian testing con postgres 8.3, postgis y django 1.1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Pues lo primero es instalar los &quot;juguetes&quot;:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ apt-get install postgis postgresql-8.3 postgresql-plpython-8.3&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;$ apt-get install python2.5 python-psycopg2 python-django ipython&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;$ apt-get install gdal-bin python-gdal &lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Ahora debemos configurar un poco postgres asi:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Debemos volvernos root y luego el usuario postgres&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ su&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ su postrgres&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ psql template1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Este úlrimo comando nos conecta a postgres como el usuario postgres (el root del servidor de bases de datos), luego configuramos una plantilla para postigs (esto lo hacemos una sola vez)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;template1=#  ALTER USER postgres WITH &lt;/span&gt;&lt;span&gt; PASSWORD &#39;postgres&#39;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ALTER ROLE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Template1=#&amp;nbsp; \q&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Luego:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ cd /tmp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ wget http://geodjango.org/docs/create_template_postgis-debian.sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ bash create_template_postgis-debian.sh&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Esto nos crea la plantilla template_postgis, ahora volvemos a postgres:&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ createdb -T template_postgis geodjango&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Salimos de postgres y del usuario root.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Ahora creamos un projecto y la app:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ djano-admin startproject geodjango&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;span&gt;$ cd geodjango&lt;br /&gt;$ python manage.py startapp world&lt;/span&gt;&lt;/pre&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Luego editamos el settings de nuestro proyecto con el editor de nuestra preferencia (sugerencia rapida gedit)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ gedit settings.py &amp;amp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Dejamos las siguientes variables así &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DATABASE_ENGINE = &#39;postgresql_psycopg2&#39;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DATABASE_NAME = &#39;geodjango&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Or path to database file if using sqlite3.&lt;br /&gt;DATABASE_USER = &#39;postgres&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Not used with sqlite3.&lt;br /&gt;DATABASE_PASSWORD = &#39;postgres&#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Not used with sqlite3.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;DATABASE_HOST = &#39;localhost&#39;&lt;br /&gt;LANGUAGE_CODE = &#39;es&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;INSTALLED_APPS = (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;django.contrib.auth&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;django.contrib.contenttypes&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;django.contrib.sessions&#39;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;django.contrib.sites&#39;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;span class=&quot;s&quot;&gt;&#39;django.contrib.admin&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre&gt;&lt;span&gt;  &lt;span class=&quot;s&quot;&gt;  &#39;django.contrib.gis&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;  &lt;span class=&quot;s&quot;&gt;  &#39;geodjango.world&#39;&lt;/span&gt;,&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;luego de guardar estos cambios:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ mkdir world/data&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre&gt;&lt;span&gt;$ cd world/data&lt;br /&gt;$ wget http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip&lt;br /&gt;$ unzip TM_WORLD_BORDERS-0.3.zip&lt;br /&gt;$ cd ../..&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Luego editamos otro archivo:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ gedit world/models.py &amp;amp;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nn&quot;&gt;django.contrib.gis.db&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;WorldBorders&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Model&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# Regular Django fields corresponding to the attributes in the&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# world borders shapefile.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CharField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;area&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IntegerField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pop2005&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IntegerField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;Population 2005&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fips&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CharField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;FIPS Code&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iso2&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CharField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;2 Digit ISO&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iso3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CharField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;3 Digit ISO&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;max_length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;un&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IntegerField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;United Nations Code&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;region&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IntegerField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;Region Code&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;subregion&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IntegerField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;Sub-Region Code&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lon&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;FloatField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;FloatField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# GeoDjango-specific: a geometry field (MultiPolygonField), and&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# overriding the default manager with a GeoManager instance.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mpoly&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;MultiPolygonField&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;objects&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;models&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;GeoManager&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# So the model is pluralized correctly in the admin.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Meta&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;verbose_name_plural&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;World Borders&quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;c&quot;&gt;# Returns the string representation of the model.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;__unicode__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Luego vemos que todo vaya bien:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ ./manage.py sqlall world &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Esto nos mostrara el sql de postgres para crear nuestro modelo:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&lt;span&gt;BEGIN;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;CREATE TABLE &quot;world_worldborders&quot; (&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;id&quot; serial NOT NULL PRIMARY KEY,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;name&quot; varchar(50) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;area&quot; integer NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;pop2005&quot; integer NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;fips&quot; varchar(2) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;iso2&quot; varchar(2) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;iso3&quot; varchar(3) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;un&quot; integer NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;region&quot; integer NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;subregion&quot; integer NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;lon&quot; double precision NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &quot;lat&quot; double precision NOT NULL&lt;/span&gt;&lt;br /&gt;&lt;span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SELECT AddGeometryColumn(&#39;world_worldborders&#39;, &#39;mpoly&#39;, 4326, &#39;MULTIPOLYGON&#39;, 2);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;ALTER TABLE &quot;world_worldborders&quot; ALTER &quot;mpoly&quot; SET NOT NULL;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;CREATE INDEX &quot;world_worldborders_mpoly_id&quot; ON &quot;world_worldborders&quot; USING GIST ( &quot;mpoly&quot; GIST_GEOMETRY_OPS );&lt;/span&gt;&lt;br /&gt;&lt;span&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Luego ejecutamos este sql:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ ./manage.py syncdb&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Lo que nos preguntara el usuario admin, su correo y la clave de acceso:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Creating table auth_permission&lt;br /&gt;Creating table auth_group&lt;br /&gt;Creating table auth_user&lt;br /&gt;Creating table auth_message&lt;br /&gt;Creating table django_content_type&lt;br /&gt;Creating table django_session&lt;br /&gt;Creating table django_site&lt;br /&gt;Creating table django_admin_log&lt;br /&gt;Creating table world_worldborders&lt;br /&gt;&lt;br /&gt;You just installed Django&#39;s auth system, which means you don&#39;t have any superusers defined.&lt;br /&gt;Would you like to create one now? (yes/no): yes&lt;br /&gt;Username (Leave blank to use &#39;diegueus9&#39;): &lt;span&gt;&amp;lt;- Toma el usuario con el que estes haciendo esto&lt;/span&gt;&lt;br /&gt;E-mail address:  &lt;span&gt;&amp;lt;- Escribe tu correo&lt;/span&gt;&lt;br /&gt;Password:&lt;br /&gt;Password (again):&lt;br /&gt;Superuser created successfully.&lt;br /&gt;Installing custom SQL for world.WorldBorders model&lt;br /&gt;Installing index for auth.Permission model&lt;br /&gt;Installing index for auth.Message model&lt;br /&gt;Installing index for admin.LogEntry model &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Luego creamos un scrip que cargará los datos de los archivos que descargamos:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ gedit world/load.py&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nn&quot;&gt;django.contrib.gis.utils&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LayerMapping&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nn&quot;&gt;models&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WorldBorders&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;n&quot;&gt;world_mapping&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;fips&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;FIPS&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;iso2&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;ISO2&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;iso3&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;ISO3&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;un&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;UN&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;name&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;NAME&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;area&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;AREA&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;pop2005&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;POP2005&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;region&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;REGION&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;subregion&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;SUBREGION&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;lon&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;LON&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;lat&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;LAT&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;mpoly&#39;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;MULTIPOLYGON&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;n&quot;&gt;world_shp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;abspath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dirname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;__file__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;data/TM_WORLD_BORDERS-0.3.shp&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;verbose&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LayerMapping&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WorldBorders&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world_shp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;world_mapping&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;                      &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;encoding&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;iso-8859-1&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;    &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lm&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;strict&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;verbose&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;verbose&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Ahora lo que vamos a hacer es subir la info de las fronteras de los paises del mundo a nuestro modelo:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ ./manage shell&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;span&gt;Python 2.5.4 (r254:67916, Feb 18 2009, 03:00:47)&lt;br /&gt;Type &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.&lt;br /&gt;&lt;br /&gt;IPython 0.9.1 -- An enhanced Interactive Python.&lt;br /&gt;?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; Introduction and overview of IPython&#39;s features.&lt;br /&gt;%quickref -&amp;gt; Quick reference.&lt;br /&gt;help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; Python&#39;s own help system.&lt;br /&gt;object?&amp;nbsp;&amp;nbsp; -&amp;gt; Details about &#39;object&#39;. ?object also works, ?? prints more.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;In [1]: from world import load&lt;br /&gt;&lt;br /&gt;In [2]: load.run()&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Saved: Jersey&lt;br /&gt;Saved: South Georgia South Sandwich Islands&lt;br /&gt;Saved: Taiwan&lt;br /&gt;&lt;br /&gt;In [3]: exit()&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;span&gt;Do you really want to exit ([y]/n)? y&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Ahora vamos a activar y usar nuestra interfaz automagica administrativa que nos da django:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$ gedit world/admin.py &amp;amp;&lt;/span&gt;&lt;/div&gt;&lt;pre&gt;&lt;span&gt;&lt;span class=&quot;kn&quot;&gt;from django.contrib.gis import admin&lt;br /&gt;from models import WorldBorders&lt;br /&gt;&lt;br /&gt;class WorldBordersAdmin(admin.GeoModelAdmin):&lt;br /&gt;    list_display = [&#39;name&#39;, &#39;area&#39;, &#39;pop2005&#39;, &#39;lon&#39;, &#39;lat&#39;]&lt;br /&gt;    search_fields = [&#39;name&#39;]&lt;br /&gt;&lt;br /&gt;admin.site.register(WorldBorders, WorldBordersAdmin)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Y luego editamos las urls:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ gedit urls.py &amp;amp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;from django.conf.urls.defaults import *&lt;br /&gt;from django.contrib import admin&lt;br /&gt;admin.autodiscover()&lt;br /&gt;&lt;br /&gt;urlpatterns = patterns(&#39;&#39;,&lt;br /&gt;    (r&#39;^admin/&#39;, include(admin.site.urls)),&lt;br /&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;Ahora ponemos a correr nuestro servidor de desarrollo:&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span&gt;$ ./manage runserver 9090&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;span&gt;Validating models...&lt;br /&gt;0 errors found&lt;br /&gt;&lt;br /&gt;Django version 1.1, using settings &#39;geodjango.settings&#39;&lt;br /&gt;Development server is running at http://127.0.0.1:9090/&lt;br /&gt;Quit the server with CONTROL-C.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Y en el navegador vamos a&amp;nbsp; &lt;a href=&quot;http://127.0.0.1:9090/&quot;&gt;http://127.0.0.1:9090/&lt;/a&gt; veremos un error 404 como este:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_mDIU7WQ5g4U/SpszAykGfYI/AAAAAAAACws/wIlwObNsGmo/s1600-h/geodjango1.jpeg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_mDIU7WQ5g4U/SpszAykGfYI/AAAAAAAACws/wIlwObNsGmo/s400/geodjango1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Luego vamos a &lt;a href=&quot;http://127.0.0.1:9090/admin&quot;&gt;http://127.0.0.1:9090/admin&lt;/a&gt; y veremos esta interfaz:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_mDIU7WQ5g4U/SpszssavSYI/AAAAAAAACw0/CLhIgndLhcE/s1600-h/geodjango2.jpeg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_mDIU7WQ5g4U/SpszssavSYI/AAAAAAAACw0/CLhIgndLhcE/s400/geodjango2.jpeg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alli ingresamos el usuario y la clave que configuramos cuando corrimos el comando syncdb y veremos esto:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_mDIU7WQ5g4U/Sps0Ut3I6lI/AAAAAAAACw8/NCfF3vxaKJ0/s1600-h/geodjango3.jpeg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_mDIU7WQ5g4U/Sps0Ut3I6lI/AAAAAAAACw8/NCfF3vxaKJ0/s400/geodjango3.jpeg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Luego hacemos clic en World Borders y veremos algo así:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_mDIU7WQ5g4U/Sps3ljL5hDI/AAAAAAAACxE/CEkUFM0PFjo/s1600-h/geodjango4.jpeg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_mDIU7WQ5g4U/Sps3ljL5hDI/AAAAAAAACxE/CEkUFM0PFjo/s400/geodjango4.jpeg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Allí podemos ordenar la lista por nombre&amp;nbsp; del pais (name), area (area), poblacion del 2005 (population 2005) o longitud y latitud del mismo. Ahora cerca al boton buscar ingresamos colombia y le damos buscar luego clic en colombia y veremos info y este mapa:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_mDIU7WQ5g4U/Sps4kYnPzNI/AAAAAAAACxM/s0yCU6WoepU/s1600-h/geodjango5.jpeg&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_mDIU7WQ5g4U/Sps4kYnPzNI/AAAAAAAACxM/s0yCU6WoepU/s400/geodjango5.jpeg&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Y eso es todo, así tendremos nuestro &quot;Hola mundo&quot; con geodjango, django, postgres, postgis, etc...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3350527338829175333-7192950568167848003?l=pyautoservicio.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	</item>

	<item>
	<title>Las bases de paginas web en django</title>
	<author>Luis Montiel</author>
	<link>http://luismontiel.com/blog/2009/jul/20/las-bases-de-paginas-web-en-django/</link>
	<guid>http://luismontiel.com/blog/2009/jul/20/las-bases-de-paginas-web-en-django/</guid>
	<pubDate>Mon, 20 Jul 2009 00:00:00 +0200</pubDate>
	<description>Vamos a crear una pagina Web dinamica en django, una que despliegue la hora fecha y hora actual, este es un buen ejemplo de una &quot;pagina dinamica&quot;, ya que sus contenidos no son estaticos, al contrario, son el resultado de algun calculo en el servidor(en este caso es el simple ...</description>
	</item>

	<item>
	<title>Definiendo nuestra aplicación: Especificaciones, relaciones y modelos</title>
	<author>Django en Mac</author>
	<link>http://django.canariblogs.com/2009/07/08/definiendo-nuestra-aplicacion-especificaciones-relaciones-y-modelos/</link>
	<guid>http://django.canariblogs.com/2009/07/08/definiendo-nuestra-aplicacion-especificaciones-relaciones-y-modelos/</guid>
	<pubDate>Wed, 8 Jul 2009 00:00:00 +0200</pubDate>
	<description>Cómo comente en el post anterior, intentaremos desarrollar una aplicación web algo compleja, por lo tanto, creo que lo mejor es, que desde el principio, definamos claramente lo que queremos. Por lo tanto, detallaremos las especificaciones que necesitamos para desarrollar Classifieds:

Los usuarios crean los anuncios y estos pueden estar o no registrados (la diferencia estriba, [...]</description>
	</item>

	<item>
	<title>Instalando Django + PostgreSQL en Mac OS X Leopard 10.5.7</title>
	<author>Django en Mac</author>
	<link>http://django.canariblogs.com/2009/07/07/instalando-django-postgresql-en-mac-os-x-leopard-1057/</link>
	<guid>http://django.canariblogs.com/2009/07/07/instalando-django-postgresql-en-mac-os-x-leopard-1057/</guid>
	<pubDate>Tue, 7 Jul 2009 00:00:00 +0200</pubDate>
	<description>1. Instalar Python
Existen varias implementaciones distintas de Python: CPython, Jython, IronPython, PyPy, etc&amp;#8230;
CPython es la más utilizada, la más rápida y la más madura. Cuando la gente habla de Python normalmente se refiere a esta implementación.
En este caso tanto el intérprete como los módulos están escritos en C. Jython es la implementación en Java de [...]</description>
	</item>

	<item>
	<title>Comenzamos con el proyecto: Classifieds</title>
	<author>Django en Mac</author>
	<link>http://django.canariblogs.com/2009/07/07/comenzamos-con-el-proyecto-classifieds/</link>
	<guid>http://django.canariblogs.com/2009/07/07/comenzamos-con-el-proyecto-classifieds/</guid>
	<pubDate>Tue, 7 Jul 2009 00:00:00 +0200</pubDate>
	<description>Ahora que ya tenemos todo instalado y configurado, nos ponemos manos a la obra con nuestro proyecto. La idea es que este, sea un proyecto totalmente funcional, es decir, que podamos luego poner en producción, de hecho será la nueva versión de un sitio de anuncios clasificados existente. Para seguir un orden y no perdernos, [...]</description>
	</item>

	<item>
	<title>Django: El Framework</title>
	<author>Django en Mac</author>
	<link>http://django.canariblogs.com/2009/07/04/django-el-framework/</link>
	<guid>http://django.canariblogs.com/2009/07/04/django-el-framework/</guid>
	<pubDate>Sat, 4 Jul 2009 00:00:00 +0200</pubDate>
	<description>Despues de probar por un tiempo CakePHP, dado que PHP era el lenguaje que siempre habia utilizado, y despues de leer mil y un articulos al respecto, he decidido probar Django. Supongo que será una tarea dura, ya que en principio no tengo ni idea de Python, pero poco a poco les iré contando mis [...]</description>
	</item>

	<item>
	<title>Creando una wiki en django</title>
	<author>Luis Montiel</author>
	<link>http://luismontiel.com/blog/2009/jun/26/creando-una-wiki-en-django/</link>
	<guid>http://luismontiel.com/blog/2009/jun/26/creando-una-wiki-en-django/</guid>
	<pubDate>Fri, 26 Jun 2009 00:00:00 +0200</pubDate>
	<description>Vamos a crear una simple wiki sobre django, para esto primero vamos a crear el proyecto django: &lt;pre&gt; $ django-admin.py startproject simplewiki $ cd simplewiki $ python manage.py startapp iwiki &lt;/pre&gt; Modificamos settings.py deacuerdo a nuestra base de datos, si necesitamos crear la base de datos, la hacemos. Ahora vamos ...</description>
	</item>

	<item>
	<title>Instalar django trunk en ubuntu</title>
	<author>Luis Montiel</author>
	<link>http://luismontiel.com/blog/2009/jun/21/instalar-django-trunk-en-ubuntu/</link>
	<guid>http://luismontiel.com/blog/2009/jun/21/instalar-django-trunk-en-ubuntu/</guid>
	<pubDate>Sun, 21 Jun 2009 00:00:00 +0200</pubDate>
	<description>&lt;p&gt;Primero que nada instalamos setuptools y subversion:&lt;/p&gt; &lt;p&gt;sudo aptitude install python-setuptools subversion&lt;/p&gt; &lt;p&gt;instalamos Mysql-python, si vamos a usar mysql con django:&lt;/p&gt; &lt;pre&gt;sudo easy_install Mysql-python &lt;/pre&gt; &lt;p&gt;Obtenemos nuestro site-packages de python:&lt;/p&gt; &lt;pre&gt;python -c &lt;span class=&quot;s2&quot;&gt;&quot;from distutils.sysonfig import get_python_lib; print get_python_lib()&quot; &lt;/span&gt;&lt;/pre&gt; &lt;p&gt;Esto lo guardamos por ahi ya que lo ocuparemos, &quot;site-packages&quot; ...</description>
	</item>

	<item>
	<title>Conocían Django?</title>
	<author>Luis Montiel</author>
	<link>http://luismontiel.com/blog/2009/jun/15/conocian-django/</link>
	<guid>http://luismontiel.com/blog/2009/jun/15/conocian-django/</guid>
	<pubDate>Mon, 15 Jun 2009 00:00:00 +0200</pubDate>
	<description>&lt;p&gt;Conoc&amp;iacute;an &lt;a href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;?&lt;/p&gt; &lt;p&gt;Django es un framework de desarrollo web de c&amp;oacute;digo abierto escrito en python, que nos permite crear aplicaciones de una manera muy rapida y sencilla.&lt;br /&gt; Django cumple en cierta medida el modelo MVC(Modelo Vista Controlador), y procura separar al m&amp;aacute;ximo la presentaci&amp;oacute;n de los datos, de ...</description>
	</item>

	<item>
	<title>New Website</title>
	<author>Luis Montiel</author>
	<link>http://luismontiel.com/blog/2009/jun/14/new-website/</link>
	<guid>http://luismontiel.com/blog/2009/jun/14/new-website/</guid>
	<pubDate>Sun, 14 Jun 2009 00:00:00 +0200</pubDate>
	<description>&lt;p&gt;Despu&amp;eacute;s de varias semanas planeando comprar mi dominio y mi hosting, para alojar alguna aplicaci&amp;oacute;n en django, decid&amp;iacute; hacer este blog y montarlo aqu&amp;iacute;, consegu&amp;iacute; el alojamiento en &lt;a href=&quot;http://www.webfaction.com&quot;&gt;webfaction&lt;/a&gt; y el dominio en &lt;a href=&quot;http://www.godaddy.com/&quot;&gt;godaddy&lt;/a&gt;, excelentes compa&amp;ntilde;ias las 2 y muy f&amp;aacute;cil de configurarlas(nunca habia tenido un dominio ni ...</description>
	</item>

	<item>
	<title>Quick Tip sobre django</title>
	<author>El rincón de Fabricio</author>
	<link>http://fabgonz.blogspot.com/2009/06/quick-tip-sobre-django.html</link>
	<guid>http://fabgonz.blogspot.com/2009/06/quick-tip-sobre-django.html</guid>
	<pubDate>Mon, 8 Jun 2009 00:00:00 +0200</pubDate>
	<description>Volvemos a los articulos tecnicos. :DPara un proyecto particular que tengo estoy realizando una aplicación sobre django. En esta aplicación tengo en un momento que servir imagenes, pero aqui me encontré con un problema. Como mi server django esta mapeado al root de mi url todos los request pasan por el mismo, asi que para poder servir una imagen tengo que pasar por el.Les dejo lo que hice como</description>
	</item>

	<item>
	<title>R + Python = Rpy!</title>
	<author>Joshua B.K.F.</author>
	<link>http://joshuakunst.com/r-python-rpy/</link>
	<guid>http://joshuakunst.com/r-python-rpy/</guid>
	<pubDate>Thu, 4 Jun 2009 00:00:00 +0200</pubDate>
	<description>Hace tiempo (mentira! llevo 5 meses) llevo implementando y descrubiendo el mundo de djando un framework para web hecho en python. Django, luego de que se entiende (:P), es intuitivo y simple.  
Por otra parte, como estadístico que soy (que creo ser :D, por lo menos soy estudiante ya de magíster) ocupo mucho R, [...]</description>
	</item>

	<item>
	<title>Detalles del almacenamiento de contenidos en S3 con django</title>
	<author>Gameocracy</author>
	<link>http://blog.gameocracy.org/?p=56</link>
	<guid>http://blog.gameocracy.org/?p=56</guid>
	<pubDate>Thu, 14 May 2009 00:00:00 +0200</pubDate>
	<description>Tal y como comentaba en la entrada anterior, cambiar nuestro &amp;#8220;storage&amp;#8221; de django a un almacenamiento remoto en Amazon S3 es realmente sencillo.
Eso sí, tenemos que ser conscientes de algunas cosas al realizar operaciones sobre los archivos. Veamoslo con un ejemplo. Supongamos que tenemos un modelo de datos Avatar en cuyo contenido tenemos un campo [...]</description>
	</item>

	<item>
	<title>Utilizando Amazon S3 como sistema de almacenamiento en Django</title>
	<author>Gameocracy</author>
	<link>http://blog.gameocracy.org/?p=46</link>
	<guid>http://blog.gameocracy.org/?p=46</guid>
	<pubDate>Sat, 9 May 2009 00:00:00 +0200</pubDate>
	<description>Es increible lo sencillo que resulta incorporar una característica tan compleja como esta en Django. Os cuento un poco lo que pretendemos.
Imaginemos que queremos almacenar las imágenes que los usuarios nos van subiendo a la web en un repositorio remoto como es el de Amazon S3. El Amazon S3 tiene una gran ventaja, y es [...]</description>
	</item>

	<item>
	<title>Django 101</title>
	<author>Zonical</author>
	<link>http://www.zonical.net/?p=200</link>
	<guid>http://www.zonical.net/?p=200</guid>
	<pubDate>Wed, 29 Apr 2009 00:00:00 +0200</pubDate>
	<description>En este post recrearé la idea del tutorial del sitio de django, simplificandolo al máximo para que puedan tomarle el gusto a este excelente framework en pocos minutos.   Al igual que en el ejmeplo del sitio de django crearé una aplicación de encuestas. Esto se debe a que es una aplicación simple,  intuitiva [...]</description>
	</item>

	<item>
	<title>Cómo se hizo el mapa de calor</title>
	<author>Bosco Curtu</author>
	<link>http://bcurtu.com/?p=654</link>
	<guid>http://bcurtu.com/?p=654</guid>
	<pubDate>Tue, 31 Mar 2009 00:00:00 +0200</pubDate>
	<description>En el anterior post explicaba lo que era el mapa de calor de dooplan. Robert construyó la solución (a partir de otro desarrollo) y aquí explica cómo funciona.</description>
	</item>

	<item>
	<title>PyCamp 2009 de PyAr</title>
	<author>Total interferencia</author>
	<link>http://rmorales.com.ar/blog/2009/03/30/pycamp-2009-de-pyar/</link>
	<guid>http://rmorales.com.ar/blog/2009/03/30/pycamp-2009-de-pyar/</guid>
	<pubDate>Mon, 30 Mar 2009 00:00:00 +0200</pubDate>
	<description>Este es el reporte del evento que, como ya comentara,  se realizó en Los Cocos en Córdoba. Fuimos mas de 30 Pythoneros de Formosa, Sante Fé, Entre Ríos, Buenos Aires y Córdoba con algunas ausencias respecto al año anterior, pero también con mucha gente nueva.

Otra vez llevé la portátil que me facilitan donde trabajo, [...]</description>
	</item>

	<item>
	<title>Leo Soto &amp; su presentación Jython &amp; Django (PyCon 2009).</title>
	<author>Continuum</author>
	<link>http://blog.continuum.cl/archives/96</link>
	<guid>http://blog.continuum.cl/archives/96</guid>
	<pubDate>Mon, 23 Mar 2009 00:00:00 +0100</pubDate>
	<description>Leo Soto nos visitó el pasado viernes respondiendo a una invitación nuestra.
Debo confesar que somos afortunados, pues ensayó la charla ( en versión extendida ) de la presentación que hará en la PyCon 2009 ( en Chicago del 27 al 29 de Marzo ) sobre el trabajo que ha estado haciendo en soportar django sobre [...]</description>
	</item>

	<item>
	<title>Instalando mod_wsgi, nginx y cmemcache en Ubuntu Intrepid para Django</title>
	<author>Frameworks Agiles</author>
	<link>http://sergiohinojosa.wordpress.com/2009/03/21/instalando-mod_wsgi-nginx-y-cmemcache-en-ubuntu-intrepid-para-django/</link>
	<guid>http://sergiohinojosa.wordpress.com/2009/03/21/instalando-mod_wsgi-nginx-y-cmemcache-en-ubuntu-intrepid-para-django/</guid>
	<pubDate>Sat, 21 Mar 2009 00:00:00 +0100</pubDate>
	<description>Es un resumen breve para configurar nuestro servidor apache con mod_wsgi, memcache y nginx, el cual lo he recopilado de varios sitios, el cual espero pueda ser de ayuda y tambien pueda permitirnos a abrir debatos en lo que se refiere a las mejores practicas para configurar tus host para aplicaciones django.

Por que mod_wsgi y no mod_apache, puedes encontrar en este resumen mas detalles en los siguientes links:

    * http://code.google.com/p/modwsgi/wiki/PerformanceEstimates
    * http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions
    * http://blog.webfaction.com/django-setup-improvements&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=sergiohinojosa.wordpress.com&amp;blog=623039&amp;post=65&amp;subd=sergiohinojosa&amp;ref=&amp;feed=1&quot; /&gt;</description>
	</item>

	<item>
	<title>Snippet de vista para i18n</title>
	<author>pyAutoservicio</author>
	<link>http://pyautoservicio.blogspot.com/2009/03/snippet-de-vista-para-i18n.html</link>
	<guid>http://pyautoservicio.blogspot.com/2009/03/snippet-de-vista-para-i18n.html</guid>
	<pubDate>Fri, 20 Mar 2009 00:00:00 +0100</pubDate>
	<description>Una de las cosas que nos ofrece django es vistas genéricas y soporte para localización (aka i10n) e internacionalización (aka i18n). Entonces una vez tenemos nuestro sitio con i18n o i10n pues lo que sigue es que le demos a nuestros usuarios la manera de escoger su idioma, django tiene un algoritmo par esto, sin embargo en algún punto nuestros usuarios querrán poder escoger su idioma preferido, para esto este framework nos da la opcion de una vista generica, sobre la cual encontrarán información en http://docs.djangoproject.com/en/dev/topics/i18n/#the-set-language-redirect-view.&lt;br /&gt;
&lt;br /&gt;
Lo único es que esta vista espera que halla un formulario para que el usuario escoja su idioma y además que tengamos predefinida una página a la cual el usuario será redirigido después de seleccionar el idioma a lo cual le veo particularmente un inconveniente pues si el usuario ha llegado a un punto importante para él y es llevado a la página inicial pues no le agradará (en mi caso me molestaría), además si queremos tener la posibilidad de hacerlo desde una url y no una variable por post?&lt;br /&gt;
&lt;br /&gt;
Para resolver este conflicto se modifica un poco la vista que nos trae django y la dejamos así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def set_lang(request,lang):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; response = HttpResponseRedirect(request.META[&#39;HTTP_REFERER&#39;])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; lang_code = u&#39;%s&#39; % lang&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if lang_code and check_for_language(lang_code):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if hasattr(request, &#39;session&#39;):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.session[&#39;django_language&#39;] = lang_code&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return response&lt;br /&gt;
&lt;br /&gt;
Esta vista espera que se escoja el idioma por una url y además redireccionará al usuario a la página en la que se encontraba, podemos hacerlo incluso en el urls.py y finalmente escogemos la url:&lt;br /&gt;
&lt;br /&gt;
urlpatterns = patterns(&#39;&#39;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (r&#39;^set_lang/(?P\w{2})/$&#39;,set_lang),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
de esta manera si se va a /set_lang/es/, django cargará todo nuestro sitio en español y volvera a la vista en la que lo hallamos hecho.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://res1.blogblog.com/tracker/3350527338829175333-3313649364470218779?l=pyautoservicio.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	</item>

	<item>
	<title>23 de Marzo: Sprint Django durante PyCamp 2009</title>
	<author>Total interferencia</author>
	<link>http://rmorales.com.ar/blog/2009/03/19/23-de-marzo-sprint-django-durante-pycamp-2009/</link>
	<guid>http://rmorales.com.ar/blog/2009/03/19/23-de-marzo-sprint-django-durante-pycamp-2009/</guid>
	<pubDate>Thu, 19 Mar 2009 00:00:00 +0100</pubDate>
	<description>La comunidad de usuarios Python de Argentina se reúne este Sábado en la segunda edición del muy exitoso PyCamp: Cuatro días en un apacible y bello lugar de las sierras de la provincia de Córdoba, para programar, planificar y disfrutar del entorno y del contacto cara a cara.

Entre las actividades tenemos planeado un Sprint para [...]</description>
	</item>

	<item>
	<title>Planificando un deploy (django + nginx)</title>
	<author>Blog de Javier Santana</author>
	<link>http://blep.blogspot.com/2009/03/planificando-un-deploy-django-nginx.html</link>
	<guid>http://blep.blogspot.com/2009/03/planificando-un-deploy-django-nginx.html</guid>
	<pubDate>Fri, 13 Mar 2009 00:00:00 +0100</pubDate>
	<description>Si algo he aprendido a lo largo de mi corta vida como perfil mixto entre desarrollador web y adminitrador de sistemas es que los &lt;span&gt;deploys sí importan&lt;/span&gt;. Ahora mismo tengo una aplicación web en django y mis &lt;span&gt;requisitos&lt;/span&gt; para el deploy son los siguientes (lo cierto es que servirían para cualquier aplicación web):&lt;br /&gt;&lt;br /&gt;- Hacer el setup del servidor en un solo paso&lt;br /&gt;- &lt;span&gt;Poder tener la aplicación en el servidor funcionando con un solo comando&lt;/span&gt;&lt;br /&gt;- Poder volver a una versión anterior en cualquier momento&lt;br /&gt;&lt;br /&gt;Simples de describir, pero complicados de llevar a cabo.&lt;br /&gt;&lt;br /&gt;Hay 3 cosas que tengo que tener en cuenta en la &lt;span&gt;configuración&lt;/span&gt;:&lt;br /&gt;- el servidor web&lt;br /&gt;- la aplicación&lt;br /&gt;- la base de datos&lt;br /&gt;&lt;br /&gt;Por mi parte he elegido nginx como servidor web ya que soporta fastcgi y parece ligero, para la aplicación uso django y como base de datos mysql. La elección no se basa nada más que en mi experiencia, no quiero entrar en el juego de que es mejor o peor.&lt;br /&gt;&lt;br /&gt;Para el deploy estoy usando &lt;a href=&quot;http://www.nongnu.org/fab/&quot;&gt;fabric&lt;/a&gt;, un sistema que permite en 3 puntos:&lt;br /&gt;- ejecutar comandos en local&lt;br /&gt;- ejecutar comandos en un server remoto&lt;br /&gt;- subir y bajar ficheros&lt;br /&gt;&lt;br /&gt;Y todo con sintaxis python :), con lo cual puede además usar todo el api de python.&lt;br /&gt;&lt;br /&gt;El &lt;span&gt;layout de carpetas&lt;/span&gt; es el siguiente:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;- /srv/agroguia/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- versions&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         - 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            - timestamp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;            - ....&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           - last (enlace simbólico a la última versión subida de esta versión)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;    - current (enlace simbólico a la carpeta dentro de versions/X/timestamp)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El &lt;span&gt;servidor web&lt;/span&gt; está dividio en dos rutas:&lt;br /&gt; - la parte estática que apunta a current/assets. De momento el peso de los assets es muy bajo (&lt;1M), puedo permitirme el tenerlos replicados.&lt;br /&gt; - la parte dinámica que usa fastcgi contra un socket unix que se crea al levantar django.&lt;br /&gt;&lt;br /&gt;Y por qué dividir la aplicación en versiones y dentro de cada una en timestamp (en realidad timestamp + hash de la revisión del sistema de control de versiones). Cada versión tiene un esquema de base de datos y una base de datos diferente dentro de mysql, de forma que todas las versiones de la aplicación dentro de esa carpeta pueden usar la misma base de datos sin problemas de integridades ni nada por el estilo. Similar a este sistema de versiones y timestamps lo usa el sistema de deploy de google app engine.&lt;br /&gt;&lt;br /&gt;Del mismo modo, cada vez que cambie el esquema de la base de datos, se creará una carpeta nueva, se llamará al comando de creación de base de datos de django (manage.py syncdb) y luego llamaré a la migración (manual, django aún no soporta migraciones al estilo rails, una pena) que usará los datos de la versión anterior.&lt;br /&gt;&lt;br /&gt;Si en cualquier momento quiero volver a una versión anterior puedo símplemente cambiar el enlace simbólico de current y levantar de nuevo el servidor. Incluso si quiero tener una versión en producción y una para desarrollar basta con que levante un servidor de desarrollo en otro puerto diferente al 80 (google en este caso lo hace con subdominios, pero yo no soy tan guay)&lt;br /&gt;&lt;br /&gt;Otro detalle importante es la posibilidad de hacer un &lt;span&gt;setup del sistema desde 0&lt;/span&gt;. Me baso en un servidor ubuntu, así que tengo unos cuantos targets que instalan dependencias (mercurial, nginx...), módulos python con &lt;a href=&quot;http://pypi.python.org/pypi/pip&quot;&gt;pip&lt;/a&gt; (el reemplazo de easy_install), carpetas, usuarios y permisos varios.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;http://res1.blogblog.com/tracker/5644592-3058030612869148232?l=blep.blogspot.com&quot; /&gt;&lt;/div&gt;</description>
	</item>

	<item>
	<title>Agregacion en Django</title>
	<author>AxiaCore</author>
	<link>http://axiacore.com/blog/2009/03/agregacion-en-django/</link>
	<guid>http://axiacore.com/blog/2009/03/agregacion-en-django/</guid>
	<pubDate>Wed, 11 Mar 2009 00:00:00 +0100</pubDate>
	<description>Trabajando con modelos en Django para aplicaciones web de alto perfil, como las desarrolladas por AxiaCore, nos encontrábamos frecuentemente con tener que hacer cálculos aritméticos básicos manualmente sobre un conjunto de datos en particular.
Por ejemplo si necesitábamos obtener el total de ventas de un mes determinado, se tenia que iterar cada elemento del conjunto de [...]</description>
	</item>

	<item>
	<title>Presentación de Empathy</title>
	<author>Software Libre</author>
	<link>http://www.softwarelibre.net/presentaci%C3%B3n_de_empathy</link>
	<guid>http://www.softwarelibre.net/presentaci%C3%B3n_de_empathy</guid>
	<pubDate>Tue, 10 Mar 2009 00:00:00 +0100</pubDate>
	<description>&lt;p&gt;Continuación de &lt;a href=&quot;http://dsympy.blogspot.com/&quot;&gt;la presentación de Django-Sympy&lt;/a&gt;, por Fabián Seoane. Un entorno de cálculo simbólico en la web; está actualmente funcionando en &lt;a href=&quot;http://empathy.sympy.org&quot;&gt;http://empathy.sympy.org&lt;/a&gt;.&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/atalaya/3343147845/&quot; title=&quot;Empathy, por Fabián Seoane (by jmerelo)&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3362/3343147845_52074379b0_m.jpg&quot; title=&quot;Empathy, por Fabián Seoane (by jmerelo)&quot; alt=&quot;Empathy, por Fabián Seoane (by jmerelo)&quot; width=&quot;240&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
La aplicación tiene un API tipo JSON-RPC, que se podría usar desde cualquier lenguaje. Actualmente está tratando de resolver problemas de seguridad y de carga.&lt;/p&gt;
&lt;p&gt;La presentación &lt;a href=&quot;http://osl.ugr.es/presentaciones/CUSL/PRESENTACION_EMPATHY.pdf&quot;&gt;os la podéis descargar del sitio habitual&lt;/a&gt;&lt;/p&gt;


&lt;a target=&quot;_blank&quot; href=&quot;http://osl.ugr.es/wordpress/?p=298&quot; class=&quot;external-link&quot;&gt;
&lt;p&gt;Fuente: &lt;a href=&quot;http://osl.ugr.es/wordpress/?p=298&quot;&gt;osl.ugr.es&lt;/a&gt;&lt;/p&gt;</description>
	</item>

	<item>
	<title>Parches para mejorar Django</title>
	<author>DynamicWare</author>
	<link>http://hgdeoro.blogspot.com/2009/03/parches-para-mejorar-django.html</link>
	<guid>http://hgdeoro.blogspot.com/2009/03/parches-para-mejorar-django.html</guid>
	<pubDate>Sun, 8 Mar 2009 00:00:00 +0100</pubDate>
	<description>Encontré algunos parches que estoy usando a diario para desarrollo y tests en Django, y me pareció interesante compartirlos. Además la idea es que sirvan de ejemplo de las cosas que se pueden encontrar en el sistema de &quot;&lt;a href=&quot;http://code.djangoproject.com/query&quot;&gt;tickets&lt;/a&gt;&quot; de Django, donde hay muchos parches para agregar funcionalidad, por ejemplo:&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://code.djangoproject.com/ticket/3357&quot;&gt;Make Django&#39;s server optionally multithreaded&lt;/a&gt;&lt;br /&gt;  (específicamente: &lt;a href=&quot;http://code.djangoproject.com/attachment/ticket/3357/devserver_multithread_trunk_r9532.patch&quot;&gt;devserver_multithread_trunk_r9532.patch&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Esto permite que el servidor de desarrollo funcione con multiple threads. Sirve, por ejemplo, si queremos realizar un request al mismo servidor (por ejemplo, usando urllib2) desde una vista.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://code.djangoproject.com/ticket/2879&quot;&gt;Add live test server support to test framework&lt;/a&gt;&lt;br /&gt;  (específicamente: &lt;a href=&quot;http://code.djangoproject.com/attachment/ticket/2879/django_live_server_r8458.diff&quot;&gt;django_live_server_r8458.diff&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Permite iniciar un servidor http desde un testcase.</description>
	</item>

	<item>
	<title>La importancia de documentar</title>
	<author>Innovando que es gerundio</author>
	<link>http://okkum.wordpress.com/2009/03/04/la-importancia-de-documentar/</link>
	<guid>http://okkum.wordpress.com/2009/03/04/la-importancia-de-documentar/</guid>
	<pubDate>Wed, 4 Mar 2009 00:00:00 +0100</pubDate>
	<description>Este será un post muy corto, leyendo en varios foros de Django buscando dudas me he dado cuenta de lo buena que es la documentación de proyecto (ya me había dado cuenta, quiero decir que he sido plenamente consciente de su magnitud).
El éxito de un proyecto software recae en un alto porcentaje en la documentación, [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=okkum.wordpress.com&amp;blog=3904695&amp;post=374&amp;subd=okkum&amp;ref=&amp;feed=1&quot; /&gt;</description>
	</item>

</channel>
</rss>
