Intro
Esta es la primera vez que intento hacer el hola mundo con Django. Como vengo
del mundo de Plone intenté ver si se podía hacer de manera sencilla con
zc.buildout.
Me gusta la idea de zc.buildout. Brinda un entorno de desarrollo repetible
entre diferentes máquinas. Se me hizo la opción natural de probar Django, así
que, después de la sorpresa de saber que Django no viene con "buildout"
integrado, me di a la tarea de intentar averiguar si se podía hacer y esto es
lo que encontré.
Mi primera impresión de Django
Repito, vengo del mundo de Plone, donde todo es muy a la "2.4" — las versiones de Plone todavía vivían atadas a Python 2.4. Lo primero que veo con Django es que puedo correrlo con el Python 2.6.4rc2, así que puedo usar el Python que ya trae la distro Ubuntu de mi laptop. Esto también es muy cómodo (jajaj, aunque no sé por qué).
Aunque Karmic ya trae las últimas versiones de Django, la experiencia me ha
obligado a no depender de paquetes específicos de cada Sistema Operativo. Es
por eso que decidí intentar instalar zc.buildout.
Construyendo un buildout para Django
El post de Jacob Kaplan-Moss Developing Django apps with zc.buildout es la primera guía que leí. Es un artículo muy bueno para poder empezar.
Y basándome en el dicho post, he aquí la estructura del directorio:
mydjangobuildout/
LICENSE
README
bootstrap.py
buildout.cfg
setup.py
src/
Intencionalmente no puse nada en src/.
Ahora, basándome en este otro post de Dan Fairs A Django Development Environment with zc.buildout
me encuentro que usa una receta para instalar PIL con buildout (algo que
nunca pude hacer con Plone por que no sabía cómo hacerlo). Así está mi
buildout.cfg sin ninguna aplicación Django, sólo sus dependencias.
[buildout]
executable=/usr/bin/python2.6
parts =
PIL
python
django
eggs =
PIL
[python]
recipe = zc.recipe.egg
interpreter = python
eggs = ${buildout:eggs}
[django]
recipe = djangorecipe
version = 1.1.1
eggs = ${buildout:eggs}
[PIL]
recipe = zc.recipe.egg
egg = PIL==1.1.6
find-links = http://dist.repoze.org/
Funciona a la perfección. Incluso puedo arrancar Django aunque no tengo ninguna aplicación para ello.
Conclusión
Me agrada mucho usar zc.buildout para construir mi app en Django. La
siguiente entrega de estas notas — Django y Buildout (Parte 1) — ya
entra en materia con el esqueleto del proyecto.