fitoria's blog

Posted Sun 20 November 2011

Django Suite II: Configurando nuestro proyecto de manera correcta.

En esta entrada abordaremos un tema importante: la configuracióndel 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 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.

Normalmente al iniciar una aplicación creamos un proyecto en blanco con el comando startproject que nos crea una carpeta con los archivos necesarios para iniciar.

Por defecto estas configuracionestienen ciertos valores 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.

Acá algunos trucos para hacer estas configuraciones de manera dinámica y distribuibles para usarse en sistemas de control de versiones:

Separación del archivo settings.py

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"settings_local.py" acá deberán ir estas configuraciones:

Ejemplo:

Como prodrán ver acá incluyo una configuración extra llamada PROJECT_DIR que usaremos luego. Para mandar a llamar este nuevo archivo en el inicio de nuestros settings.py incluimos la siguiente línea:

from settings_local import *

Dinamizando las rutas de archivos estáticos.

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

Ejemplo:

gitignore

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 ejemplo acá será similar para otros sistemas.

Presentando django-initkit.

Para no hacer todo estas configuraciones cada vez que tengamos que iniciar un proyecto he creado django-initkit 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 Pypi (pip install django-initkit) o haciendo checkout desde github.

Su uso es igual a django-admin.py, nada más que el nombre del comando es django_initkit.py

Ejemplo:

django_initkit.py startproject foo

Espero que les haya gustado el post de hoy, pueden sugerir mas temas en los comentarios.

Categories: django, informatica, planeta, programacion, python,

Comments