5

Implementacion de una correcta configuracion hacia nuestra app

Quieres que tu app sea mas sostenible ?, si es asi sigue mirando y si no tambien 😃

La configuracion de nuestro archivo settings.py esta genial, pero si queremos implementar una configuracion adecuada para una aplicacion en produccion, testing o pruebas y desarrollo deberemos hacer algo mas que esto, deberemos de implementar unos pequeños cambios a nuestro archivo de settings.py

En nuestro proyecto tenemos el archivo basico de configuracion llamando settings.py, pero sabiendo que nuestro proyecto estara en distintos ambientes ( desarrollo, testing o pruebas y produccion ) porque no tener una carpeta de configuraciones para cada una e implementando diversos cambios en estas para adecuarlas a sus determinadas funciones, lo se suena un poco dificil pero ya veras, es muy facil

Primero tenemos que saber que en desarrollo, en el momento en el cual estaremos programando nuestra aplicacion, deberemos de tener unas opciones de la configuracion que mas adelante seran nombradas para un mejor desarrollo, en testing o pruebas de la aplicacion, el momento en el cual estaremos testeando nuestros modelos y todo lo demas,( que luego habra otro post para explicar como hacer esto ), deberemos de tener una base de datos distinta a la que usaremos en desarrollo y produccion, todo esto no se puede hacer con un solo archivo de settings.py

Primero copiamos todo lo que tengamos en nuestro archivo settings.py, luego de esto borramos el archivo settings.py y creamos una carpeta llamada “settings” dentro de esta creamos cuatro archivos, el primero “desarrollo.py”, el segundo “produccion.py”, el tercero “pruebas.py”, y el cuarto “base.py

En “base.py” iran toda la configuracion que sea igual en desarrollo, produccion y testing, en la cual pegaremos lo anterior copiado, esto sera nuestra base de configuraciones

luego a hacemos lo siguiente en “desarrollo.py” ,“produccion.py” y “pruebas.py”:

frombase import *

#aca modificamos lo que sea necesario dependiendo del entorno
DATABASES = {
	'default':{
		'ENGINE':'django.db.backends.sqlite3',
		'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
	}
}

Con esto habremos heredado toda la configuracion base, y ademas podemos modificar lo que sea necesario, un ejemplo, quiero en desarrollo tener sqlite3 y en produccion postgres, muy sencillo, en la carpeta “desarrollo.py” ponemos:

frombase import *

#que es esto ?
DEBUG = True

ALLOWED_HOSTS = []

#aca modificamos la data base por sqlite3 porque es la que quiero para desarrollo
DATABASES = {
	'default':{
		'ENGINE':'django.db.backends.sqlite3',
		'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
	}
}

y en “produccion.py” hacemos :

from base import *

#que es esto ?
DEBUG = False

ALLOWED_HOSTS = ['*']

#aca modificamos la data base por postgres porque es la que quiero en produccion
DATABASES = {
	'default':{
		'ENGINE': 'django.db.backends.postgresql_psycopg2',
       		'NAME': 'Ejemplo_DB',
        	'USER': 'Ejemplo_Usuario',
        	'PASSWORD': 'password_usuario',
        	'HOST': 'localhost',
        	'PORT': '5432',
	}
}

Calor que falta instalar algunas cosas para usar postgres como psycopg2 pero aca solo mostramos la configuracion, lo mismo ariamos con “prueba.py” dependiendo de lo que queramos hacer

Aqui hay 2 cosas mas, DEBUG y ALLOWED_HOSTS, que son ?, DEBUG nos muestra la pagina de errores en django, cuando nostros tenemos un error de logica en nuestra app este no lo hace saber en una pagina llamada DEBUG PAGE, y ALLOWED_HOSTS son los host permitidos, cuando estamos en desarrollo es bueno tener DEBUG en True porque esto le dira a django que nos muestra la DEBUG PAGE y sera mas facil detectar nuestro error pero todo cambia en produccion, este es recomendable tenerlo en False porque se esta en True, y en un caso ipotetico que se produsca un error en produccion django le mostrara la DEBUG PAGE a los usuarios y estos podran ver informacion como la de nuestro servidor lo cual no es nada bueno, si cambiamos esto es tambien recomendable cambiar ALLOWED_HOSTS en el pondremos el host de nuestra app en produccion

Por ultimo tenemos que activar y darle acceso a django a nuestra nueva carpeta de configuraciones para esto hacemos:

export DJANGO_SETTINGS_MODULE=nombreDeLaApp.settings.develop

y en el archivo wsgi.py lo conectamos con nuestro archivo de configuraciones de produccion:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nombreDeNuestraApp.settings.produccion')

application = get_wsgi_application()

y listo, estas usando configuraciones avanzadas para cada entorno lo cual es bastante recomendable y escalablable a largo plazo.

Otros temas seran tratados en otros posts que seran creados mas adelante acerca de testing de apps , conectividad con MongoDB, channels en django que permiten las apps realtime mucho mas faciles de usar y Reactjs con django entre otras cosas

Disfruta de estos conocimientos 😃

Escribe tu comentario
+ 2