Se que la mayor ha tenido problemas con el despliegues de sus aplicaciones en Django sobretodo porque hay hostings un poco dificiles de manejar y lo digo sobre todo por aquellos que recién comienzan en Django.
Pythonanwhere es un Hosting, que brinda muchas facilidades para el despliegue de aplicaciones hechas en Django. En verdad es muy sencillo instalar un proyecto base, con tan solo un click.
Para poder desplegar su aplicación debe de iniciar sesión en pythonanywhere, es obvio que antes debieron crearse su cuenta. La pagina de este hosting es www.pythonanywhere.com.
Una vez hecho esto van a poder visualizar esto
Que es el menú principal de pythonanywhere. Como podemos ver tenemos 5 pestañas, de las cuales 4 de ellas son de uso gratuito. La pestaña Schedule es solo para cuentas premiun y permite ejecutar scripts.
Bueno comenzamos, para poder crear un proyecto en blanco vamos a ir a la pestaña de web y vamos a escoger la opcion del panel izquierdo que dice "Replace with a new web app" , o mejor dicho reemplazar con una nueva aplicación web pero debido a que no tenemos ninguna simplemente crearemos nuestra primera aplicación web. Esta vez vamos e elegir de entre las demás aplicaciones a Django como nuestro entorno de trabajo para desarrollo web. Pueden elegir Web2py y otros mas.
Despues de esto les aparece una dialog o casilla en done le pedira el nombre de su aplicacion, por defecto sale "mysite" pero uds pueden cambiar ese nombre. Una vez asignado el nombre daremos click en next, para que pythonanywhere cree nuestra aplicacion base de django. Con la distribución base de trabajo. ya podran entrar a su aplicación mediante : "usuario_de_pythonanywhere.pythonanywhere.com" en mi caso freedev.pythonanywhere.com.
Les saldra la clasica pagina, con un mensaje "It Worked" ya que la pagina aun se encuentra en esarrollo y no hemos desactivado la depuración de django para hacer nuestro despligue en producción.
Después de creada nuestra aplicación daremos click en el botón "close" para cerrar el dialog. Luego vamos a ir a la pestaña "files" o archivos para entrar y editar los archivos de nuestra aplicación que se encuentran dentro de la carpeta cuyo nombre es el mismo que pusimos al crear nuestra aplicación.
Vamos a configurar nuestra aplicación para que pueda tener una conexión a una base de datos en este caso solo tenemos "mysql", asi que haremos una configuración para "mysql". Para esto usaremos la base de datos por defecto para mysql que nos da pythonanywhere !!. Ojo, uds pueden crear otras base de datos pero deben saber que el nombre de su base de datos es iguala su "usuario$base_de_datos_creada", si creo una base de datos llamada "testing" entonces el nombre de la base de datos es <<mi_usuario + $ + mi_bd>>, es decir en mi caso "freedev$testing". El "host" para nuestra aplicación y el acceso a mysql es "mysql.server" no es guion bajo es punto. El usuario como sabran es el usuario con que el que esta su cuenta y la clave puede ser cambiada por la clave que uds quieren si ingresan en la sección de "Set my password MySQL" y dan enter, si es asi entonces la contraseña para su conexión a MySQL es esa clave. Otra cosa mas no es necesario configurar el puerto o PORT de nuesta settings.py y es mejor asi ya que pythonanywhere se encarga de eso.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mi_usuario$mi_db', 'USER': 'mi_usuario', 'PASSWORD': 'mi_contraseña_mysql'', 'HOST': 'mysql.server', 'PORT': '', }}
La configuracion de "settings.py" debe quedar de esta forma. si tienen algun problema pueden consultarme, pero creo que hasta ahora todo es sencillo.
Ya con esto podemos ir a la pestaña de "Consoles" o consolas y pobrar si la configuración de nuestro proyecto es valida. Mediante el comando "Python manage.py validate", si nos vota "0 erros found", nos esta diciendo que nuestra aplicación no tiene errores y podemos seguir. Espero que esto les sirve de mucha ayuda.
Nota: Antes de ejecutar el comando deben ver si su carpeta se encuentra con el comand "ls" para listar todo lo que tengan. Una vez hecho eso se dirigen hacia su carpeta con el comando "cd mi_carpeta", si la carpeta que quiero entrar se llama "carpetota" entonces el comando sera el siguiente "cd carpetota".
Suerte y diviértanse con Django.