2010-01-21 12 views
5

La configuración de Django incluye una lista de variables de python que se utilizan para una gran cantidad de cosas, desde la configuración de la base de datos hasta las aplicaciones instaladas. Incluso muchas de las aplicaciones reutilizables hacen algunas de las configuraciones requeridas.Infraestructura de configuración dinámica de Django y mejores prácticas

Con una docena de sitios, es difícil administrar la configuración de todos los proyectos.

Afortunadamente la configuración es solo un módulo de Python con variables, por lo que puede hacer cualquier magia para rellenar las variables que desee.

¿Qué prácticas has seguido o crees que se pueden usar para separar varias configuraciones relacionadas en diferentes archivos?

Al parecer, el vigente práctica enterprisey es que un desarrollador crea una guerra y el departamento de operaciones golpea al pescado azul y se encarga de toda la base de datos (y tal) ops cosas (según Jacob's email).

¿Qué dinámica settings.py puede crear que ayude a las prácticas empresariales existentes?

+0

https://code.djangoproject.com/wiki/SplitSettings#ini-stylefilefordeployment –

Respuesta

1

He visto a menudo archivos de configuración con algo como:

from localsettings import * 

y en localsettings.py cosas como las conexiones de bases de datos y DEBUG valores se definen. localsettings.py es (o puede ser) diferente para cada entorno de despliegue (dev/staging/production, etc.), y no vive en control de fuente con todo lo demás.

Algo que he encontrado útiles últimamente está poniendo esto en mi settings.py:

try: 
    from localsettings import * 
except ImportError: 
    from default_localsettings import * 

en default_localsettings.py que definen un grupo de valores predeterminados (DEBUG = True, utilizar una base de datos SQLite en el mismo directorio que default_localsettings.py etc).

Esto puede que no sea útil una vez que haya configurado las cosas, pero me ha resultado útil para poder verificar el control de mi proyecto y hacer que funcione inmediatamente usando runserver, sin tener que configurar nada. arriba.