Django Uso de variables de entorno para gestionar la configuración en servidores


Ejemplo

El uso de variables de entorno es una forma muy utilizada para configurar la configuración de una aplicación en función de su entorno, como se indica en la aplicación The Twelve-Factor .

Como es probable que las configuraciones cambien entre los entornos de implementación, esta es una forma muy interesante de modificar la configuración sin tener que buscar en el código fuente de la aplicación, así como guardar secretos fuera de los archivos de la aplicación y el repositorio de código fuente.

En Django, la configuración principal se encuentra como settings.py en la carpeta de su proyecto. Como es un simple archivo de Python, puede usar el módulo os de Python de la biblioteca estándar para acceder al entorno (e incluso tener los valores predeterminados adecuados).

settings.py

import os

SECRET_KEY = os.environ.get('APP_SECRET_KEY', 'unsafe-secret-key')

DEBUG = bool(os.environ.get('DJANGO_DEBUG', True) == 'False')

ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS', '').split()

DATABASES = {
    'default': {
        'ENGINE': os.environ.get('APP_DB_ENGINE', 'django.db.backends.sqlite3'),
        'NAME': os.environ.get('DB_NAME', 'db.sqlite'),    
        'USER': os.environ.get('DB_USER', ''),
        'PASSWORD': os.environ.get('DB_PASSWORD', ''),
        'HOST': os.environ.get('DB_HOST', None),
        'PORT': os.environ.get('DB_PORT', None),
        'CONN_MAX_AGE': 600,
    }
}

Con Django, puede cambiar la tecnología de su base de datos, de modo que puede usar sqlite3 en su máquina de desarrollo (y eso debería ser un buen valor predeterminado para comprometerse con un sistema de control de origen). Aunque esto es posible no es aconsejable:

Los servicios de respaldo, como la base de datos de la aplicación, el sistema de colas o el caché, es un área donde la paridad dev / prod es importante. ( La aplicación de los doce factores - Paridad de desarrollo / prod )

Para utilizar un parámetro DATABASE_URL para la conexión a la base de datos, consulte el ejemplo relacionado .