¿Qué son las variables de entorno?

Cuando desarrollamos un proyecto vamos a tener parte de código con información sensible, hay variables que no pueden estar visibles para cualquier usuario que accedan a nuestro código, por lo que es interesante configurar por seguridad dichas variables de entorno.

Las variables de entorno son valores dinámicos que pueden afectar el comportamiento de programas y procesos en un sistema operativo. Estas variables almacenan información sobre el entorno de ejecución del sistema, como la configuración del sistema, las preferencias del usuario, la ubicación de archivos y otros detalles relevantes para el funcionamiento de programas y aplicaciones.

Algunas de estas variables de entorno en un proyecto de desarrollo de Django son la clave secreta de la aplicación, los host permitidos, la configuración de nuestro servidor de correo o las credenciales de acceso a la base de datos entre otras.

Utilizar las variables de entorno

Con el fin de dar seguridad a nuestro proyecto y no hacer públicas estas variables podemos utilizar la librería de Python django-environ que nos va a permitir poder configurar nuestras variables de entorno.

Si revisamos la documentación de esta librería observaremos que los requisitos que debemos cumplir son tener una versión de Django superior o igual a 1.11 y una versión de Python 3.5 o superior. Si cumplimos con estos dos requisitos podemos realizar la instalación de la librería, en caso contrario nos quedaría actualizar a dichas versiones o buscar otras opciones para poder utilizar las variables de entorno.

Para realizar la instalación de la librería debemos ejecutar desde la terminal de nuestro entorno virtual del repositorio en el que estamos trabajando:

python -m pip install django-environ

Podemos comprobar las librerías instaladas en el entorno virtual con el comando pip list

También necesitamos crear el archivo .env en nuestro proyecto a la misma altura en que se encuentra el archivo manage.py donde debemos de configurar nuestras variables. Es importante añadir este archivo al gitignore para evitar que se puede subir a nuestro repositorio y no queden los datos expuestos.

Una vez realizada la instalación de la librería debemos crear en el archivo setting.py una instancia de dicha clase , indicarle de donde tiene que coger las variables de entorno y declararlas, tras ello habrá que indicar en el archivo .env los valores que adoptan las diferentes variables

Ejemplo archivo settings.py

import environ

# Initialize environment variables
env = environ.Env()

# Take environment variables from .env file
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
EMAIL_HOST = env('EMAIL_HOST')
EMAIL_PORT = env('EMAIL_PORT')
EMAIL_HOST_USER = env('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')
EMAIL_HOST = env('EMAIL_HOST')
DB_ENGINE = env('DB_ENGINE')
DB_NAME = env('DB_NAME')

Ejemplo archivo .env

SECRET_KEY=django-insecure-ClavedeNumerosdeTuAplicación
DEBUG=True
EMAIL_HOST=micorreo@example.com
EMAIL_HOST_PASSWORD=miPassword
EMAIL_PORT=587

Con esto ya tenemos nuestras variables de entorno configuradas y por tanto añadido seguridad a nuestro proyecto

6 comentarios en “Variables de entorno en Django”

  1. Thank you for another wonderful article. Where else could anyone get that type of information in such a perfect way of writing? I have a presentation next week, and I am on the look for such info.

  2. stacy.batiste

    Thank you for the auspicious writeup. It in fact was a amusement account it.
    Look advanced to far added agreeable from you!
    However, how could we communicate?

  3. I have been surfing onlinhe more than 4 hours today,
    yet I never found any interesting article like yours.
    It’s pretty worth enough for me. In my opinion, if all webmasters and bloggers ade good content
    as you did, tthe nnet will be a lot more useful than ever before.

    Elizabeth

  4. I for all time emailed this weblog post page tto all my contacts, for the rdason that
    if like to read it next my friends will too.

    1. Moderador Prooyectos IT

      Thank you for sharing the post with your contacts! I’m glad you enjoyed it, and I hope your friends find it useful as well.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio
WordPress Appliance - Powered by TurnKey Linux