Hola a todos soy Adolfo (RodasLA), tengo 22 años, vivo en Venezuela, específicamente en el Municipio Cocorote, Estado Yaracuy; soy un programador y diseñador web con más de 4 años de experiencia utilizando principalmente el lenguaje de programación Python y plataformas libres/open source, aunque actualmente por necesidad (para nada por gusto) utilizo windows en mi PC personal, como hobbies me gusta leer, así como también disfrutar y practicar la música coral y las artes plásticas. Mis principales motivaciones para unirme a esta comunidad son por 2 cosas:
1- Disfrutar mientras comparto abiertamente mis conocimientos y habilidades y
2- ¿Porqué no? Tratar de ganar beneficio de esto (sobre todo tomando en cuenta la situación de este país :D ).
Ya habiendo hecho mi introducción vamos a lo principal en este post, el primero de una futura serie si a ustedes les gusta por supuesto, hablemos del desarrollo web con Python y uno de los frameworks más populares de este lenguaje, Django:
¿Qué es Django y para que sirve?
Es un framework específicamente desarrollado para agilizar el desarrollo web y de esta manera hacer más eficiente y rápido los ciclos de desarrollo, su origen se da gracias a los programadores Adrian Holovaty y Simon Willison cuando decidieron abandonar PHP y utilizar Python (Un lenguaje de programación interpretado al igual que PHP) para la programación de sitios web de alta envergadura como lo es Lawrence.com alrededor del año 2003, está basado en una arquitectura derivada del MVC (Modelo-Vista-Controlador) llamada MPV (Modelo-Plantilla-Vista, MTV por sus siglas en inglés), hay algunas diferencias más que todo teóricas, que prácticas, aunque es bueno tenerlas en mente para evitar confusiones, click aquí para mayor información.
Así, con Django podremos crear desde webs personales, sistemas de gestión de contenido (CMS, por sus siglas en inglés) a la par o mejores que sistemas como Wordpress e incluso plataformas de eCommerce y ERP. La mayor ventaja de este framework radica en la facilidad de aprendizaje y rapidez de desarrollo que ofrece, esto en parte gracias a estar codificado en Python, teniendo una filosofía basada en la DRY.
¿Qué necesitaré?
Para comenzar esta serie de tutoriales necesitaremos las siguientes cosas:
1- 100% Verdaderas ganas de aprender (¡lo más importante! ;) ), no es obligatorio conocer Python, a lo largo de los tutoriales si ya tienen experiencia en programación verán cuán sencillo es adaptarse.
2- Computador con alguna distribución GNU/Linux preferiblemente, aunque con Windows funciona perfectamente, pero no explicaré explícitamente para esta segunda plataforma.
3- Python 3.4 o mayor, esto es sumamente importante, para el momento de esta redacción la rama estable actual de Django no soporta versiones menores de Python 3, también soporta Python 2.7, pero no se utilizará acá.
4- En algunas distribuciones la utilidad "pip" no se encuentra instalada, en Ubuntu por ejemplo, se instala con el comando: sudo apt install python3-pip; este no es el caso en Windows que viene cargado con el instalador.
5- En ésta serie comenzaremos usando Sqlite3 como base de datos, y luego integraremos con PostgreSQL, así que deben asegurarse de tenerlas instaladas (San Google les guiará).
6- Por último para instalar Django solo debemos ejecutar el siguiente comando en la terminal sudo pip install Django, de ésta manera se puede comenzar con el desarrollo.
Para aquellos que no sepan dónde deben escribir el código pueden instalar editores de texto plano como Atom y Brackets, también existen entornos de desarrollo (IDES's si prefieren el inglés) como PyCharm de JetBrains para los que les gusta ir con ayuda. Sé que algunos más experimentados me crucificarán por no recomendar primero Vim o Nano para la consola xD.
Creando mi primer proyecto.
En esta serie de tutoriales iremos aprendiendo a crear una página web de información personal, algo así como una about.me, para finalizar con el desarrollo de lo que sería un gestor de contenido sencillo para un Blog personal. Ahora lo primero que debemos hacer es crear una carpeta dónde iremos guardando el contenido de las clases, luego desde una terminal escribimos los siguientes comandos (Windows users, sorry):
$ cd /home/tuusuario/carpeta/donde/están/los/proyectos
$ django-admin.py startproject tutorial
Pueden cambiar el nombre del proyecto si quieren, con esto se generará un esquema de archivos y directorios de la siguiente manera:
- tutorial (Carpeta raíz de nuestro proyecto)
-- tutorial (Aquí irán las configuraciones generales)
--- \_\_init\_\_.py (Esto le dice a Python que se trata de un "*paquete python*" y no una carpeta común)
--- settings.py (Archivo responsable de todas las configuraciones generales)
--- urls.py (Aquí se definen las urls que serán usadas por nuestra web, luego explicaré con más detalle)
--- wsgi.py (Punto de entrada con el cuál servidores como Apache y Nginx reconocerán su aplicación al momento de desplegarla en producción)
-- manage.py (Con este script controlaremos la aplicación y posterior desarrollo de nuestra web)
Ahora debemos confirmar que todo ha ido bien con el siguiente comando python3 manage.py runserver, esto nos debe generar la siguiente información en nuestra consola:
Y en nuestro navegador al escribir 127.0.0.1:8000 debe mostrarse así:
El puerto y la dirección pueden cambiarse si se desea o si no se tiene disponible el puerto por defecto, para ello solo debemos escribir lo siguiente por ejemplo: python3 manage.py runserver 0.0.0.0:8080, la dirección 0.0.0.0 le indica a Django que use todas las IP's públicas disponibles en la conexión de la PC, se puede escribir también cualquier dirección arbitraria que esté disponible.
Siguientes pasos
Con esto ya tenemos configurado y activo nuestro primer proyecto en Django, así de fácil, en el siguiente tutorial empezaremos a crear nuestra primera "app" y como definir los modelos de datos y su posterior manipulación desde el admin de nuestro framework. Si este tema es de su agrado y desean seguir mis actualizaciones en esta página no se olviden de comentar y exponer sus consejos o dudas sobre el tema, acepto sugerencias con respecto al futuro de los "tutos". ;)
PD: Tal vez no sea un súper gurú en la materia, pero en la medida de mis posibilidades responderé a todas sus dudas e inconvenientes sobre este o cualquier tema relacionado.
¡Gracias a todos los que leyeron esto hasta el final! ¡Feliz semana!