Django Deployment 2: Organización de Archivos

Esta es la organización de archivos que estoy usando en estos días. Este tipo de cosas tiende a no cambiar mucho de proyecto a proyecto.

Si te fijas hay varias carpetas adicionales a las que normalmente crea django-admin.py o manage.py.

La carpeta de migrations es creada por el module para django south. Este modulo facilita actualizar los “schemas” de bases de datos cada vez que se le hace un cambio a un “model”.

La carpeta requirements contiene un archivo de texto (requirements.txt) que contiene las dependencias de este proyecto. Este archivo lo mantengo manualmente añadiendo el nombre de cada module que usa este proyecto. Inicialmente todos mis proyectos usan django y south pero eventualmente la lista sigue creciendo.

La importancia de este archivo (requirements.txt) se hace evidente cuando se integra a la ecuación virtualenv y pip. Virtualevn es un module de Python que permite crear ambientes de desarrollo para proyectos de Python. En otras palabras virtualenv crea un folder que contiene un interpretador de python, django, south y todas las dependencias de un proyecto. Pip es una herramienta similar a easy_install pero esta tiene mejor integración con virtualenv.

Crear un virtualenv permite tener un versión especifica de cada module para cada proyecto que trabajes. Así que si tienes que hacer un upgrade a nivel de sistema, no afectas aplicaciones individuales. Otra ventaja de hacer este tipo de configuración es que ayuda a la hora del “deployment” porque tienes una receta de como instalar cada aplicación.

En el post de mañana voy a explicar como uso virtualenv para trabajar en mi sistema local.

Si tienes una forma diferente de organizar tus proyectos de django, déjame saber dejando un comment abajo.

<<Django Deployment 1: Instalación de mod_wsgi

Django Deployment 3: Virtualenv, virtualenvwrapper, pip>>

Django Deployment 4: Server>>