¡Hola Mundo! en Django
Django es uno de los frameworks webs basado en python más conocidos en la industria del desarrollo web. Acá te explicaré la arquitectura basíca de Django y haremos un simple pero poderoso ¡Hola mundo!
Lo primero que debemos saber es que Django usa el Patrón MVT, es decir Modelo-Vista-Template/Plantilla. Si revisamos la documentación oficial este patrón está representado por tres capas, las cuales tienen responsabilidades bien definidas (para simplificar los conceptos a grandes rasgos); el modelo se encarga de la persistencia de los datos (base de datos, migraciones, etc..), la vista de manejar la logíca de negocio, y por ende se encarga de comunicarse con el modelo y presentar la plantilla/template (sí la lógica así lo especifíca). Por último el template/plantilla, qué básicamente se encarga de la presentación de la información, qué generalmente es hecha en HTML/XML ó JSON.
Para aclarar un poco más este manejo, en un flujo normal ocurren los siguientes pasos:
- El cliente (a traves del navegador web) genera la solicitud porque necesita obtener algo de los servidores, coloquemos como ejemplo este artículo. Usted le da click a la url abc.com/1234 y genera una solicitud.
- La vista recibe esa solicitud y se da cuenta que necesita el artículo 1234, por ende se lo pide al modelo.
- El modelo busca el artículo 1234 y le envía los datos a la vista.
- La vista ahora se da cuenta que necesita mostrar los datos en formato HTML y se la pasa al template/plantilla para que arme la plantilla.
- El template/plantilla, agarra los datos y los formatea para armar el HTML final.
- La vista ya con el HTML debidamente armado le contesta al cliente. Si el cliente es un navegador web, agarra el HTML y lo renderiza para mostrarle la información lo más amigable posible al cliente final.
Ahora para proseguir con nuestro ¡Hola Mundo!, necesitas conocer sobre entornos virtuales en python. Basícamente cuando instalamos una biblioteca (library) en python esta se instala globalmente, es decir le impacta a todo el sistema. Esta característica es un problema, porque, si tenemos dos proyectos con la misma biblioteca pero cada proyecto la utiliza en diferentes versiones, tendremos un conflicto. Sólo podemos tener versión de esa biblioteca para todo el entorno global. Acá es donde entran a jugar los entornos virtuales.
En la practica un entorno virtual nos encapsulará localmente todas las bibliotecas de nuestro proyecto. Así que podemos tener repetida la biblioteca (sin importar la versión)en distintos entornos virtuales, y no tendríamos el problema del ejemplo anterior.
Ya con estos conceptos claros, el primer paso es instalar pipenv para así soportar entornos virtuales. En Ubuntu (Linux) el comando es:
$>sudo apt install pipenv
Si tienes Windows y quieres ejecutar Linux nativamente te dejo este artículo para que sepas como hacerlo.
Ahora solamente creamos una carpeta y nos ubicamos en ella
$>mkdir django
$>cd django
En la carpeta de trabajo, ahora debemos activar nuestro entorno virtual con el comando
$>pipenv shell
Ahora vamos a installar django con el comando
$>pipenv install django
Ahora creamos el proyecto usando django-admin
$>django-admin startproject main .
Al hacer esto nos crea una carpeta main con las configuraciones pricipales del projecto y en este punto se puede decir que django ya está instalado correctamente.
Podemos levantará un servidor web con el comando python manage.py runserver
y levantar un servidor web local.
Ahora podemos verificar desde el navegador nuestro Django.
Aplicación ¡Hola Mundo!
Si queremos crecer Django se deben crear aplicaciones, así que vamos a crear nuestra aplicación ¡Hola Mundo! con el siguiente comando:
$>python manage.py startapp hola_mundo
Este comando nos crea una carpeta con la siguiente estructura:
hola_mundo/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
Ahora en nuestra aplicación, vamos a crear una función en la vista (views.py
) que responda nuestro ¡Hola Mundo!
from django.http import HttpResponsedef hola_mundo(request):
return HttpResponse('¡Hola Mundo! :)')
Necesitamos enlazar la vista de nuestra aplicación con el enrutador urls.py
que se encuentra en la carpeta principal del proyecto main
from django.contrib import admin
from django.urls import path#Apps
from hola_mundo import viewsurlpatterns = [
path('admin/', admin.site.urls),
path('hola-mundo', views.hola_mundo)
]
Ahora cuando volvamos a levantar el servidor web con python manage.py runserver
tendremos nuestro ¡Hola Mundo! en la url local 127.0.0.1:8000/hola-mundo
Si te perdiste un poco y quieres saber lo que está ocurriendo, mira el siguiente gráfico:
Al pegar la url 127.0.0.1:8000/hola-mundo
se genera la solicitud hacia el proyecto, esta llega al archivo urls.py
y es enrutada a nuestra vista views.py
, es allí en la vista donde procesamos y generamos la respuesta, para así poder pintar el texto ¡Hola Mundo¡ :) en nuestro navegador web.
El proyecto está disponible en Github bajo la rama hola-mundo.