Libro: Practical Django 2 and Channels 2
Escrito por Federico Marani, donde explica la estructura de Django 2 desde version de python, instalacion, desarrollo de aplicacion y deploy de este, tambien nos presenta Django Channels y como usarlo para mejorar nuestra aplicación.
Algo interesante es que no necesitas conocer Django para poder leer este libro ya que es muy explicito con todos los temas ademas nos proporciona unos ejemplos que podemos encontrar en el siguiente repositorio https://github.com/Apress/practical-django2-and-channels2
Django es un framework web desarrollado en Python.
¿Que necesitamos?
¿Como empezar?
Como crear nuestro primer proyecto con Django
Te comparto los pasos que nos proporciona el libro para poder crear nuestro primer proyecto con Django 2
- Lo primero que debemos hacer es destinar una carpeta donde guardaremos nuestro proyecto
- Nos posicionamos en nuestra carpeta creada anteriormente
- Creamos entorno con Django Instalado
pipenv --three install Django
- Ahora ya tenemos un entorno, debemos activarlo
- Creamos nuestro proyecto, con la palabra django-admin startproject nombre_proyecto .
django-admin startproject booktime .
Estructura de un proyecto con Django
Cuando se crea un proyecto tendremos una carpeta con archivos dentro de este:
\_ manage.py # linea de comando para poder interactuar con el proyecto
\_ booktime # paquete python con archivos de configuracion dentro
\_ __init__.py # archivo vació
\_ settings.py # configuración de nuestro proyecto
\_ urls.py # contiene las utls de nuestro proyecto
\_ wsgi.py # archivo de configuración para hacer deploy
\_ Pipfile # lista de las librerías de python instaladas
\_ Pipfile.lock # archivo pipenv interno
Correr proyecto
Aplicaciones Django
Una aplicación es una parte del proyecto, esto nos ayuda a seccionar mejor nuestro proyecto separando las áreas de trabajo, como por ejemplo en un proyecto de punto de venta podemos tener nuestra aplicación de almacén, ventas, usuarios, etc.
Para crear una aplicación podemos hacerlo de la siguiente manera
./manage.py startapp <nombre_aplicacion>
Esto creara una carpeta con la siguiente estructura
\_ nombre_aplicacion
\_ admin.py
\_ apps.py
\_ __init__.py
\_ migrations
\_ __init__.py
\_ models.py
\_ tests.py
\_ viewspy
Archivo de Configuración
AL crear un proyecto con Django, este tiene un archivo de configuracion donde se definen caracteristicas importantes. Este archivo lo podemos encontrar en la carpeta inicial al momento de crear un proyecto con el nombre settings.py
Debug
Es un valor boleano que nos sirve para correr nuestra aplicacion ya sea en entorno de produccion o desarrollo.
Installed Apps
Lista donde especificamos nuestras aplicaciones que creamos o instalamos
Logging
Parte importante para reportar problemas es nuestro proyecto, mandando tipos de logs.
STATIC_ROOT / STATIC_URL
Ruta donde se guardaran archivos css, imagenes entre otros.
MEDIA_ROOT / MEDIA_URL
Ruta donde se especifica el lugar donde se guardaran archivos que se suben a nuestra proyecto.
Middleware
Codigo extra que se ejecuta entre una peticion web y nuestra aplicacion
Templates
Carpeta con nuestro archivos html.
EMAIL_BACKEND
Django tiene una libreria para enviar correos que se pueden configurar con un tercero, por defecto usa la consola.
DATABASES
Aqui se configura nuestros datos de conexion a nuestra base de datos ya sea mysql, postgres, etc.
Django Channels
A lo largo del libro vemos varios ejemplos de como crear una aplicacion con Django 2, ahora podemos hablar de Channels. Una de las ultimas librerias agregadas al ecosistema de Django, esto nos permite crear aplicaciones asincronas.
Este tipo de implementaciones las veremos mas cuando queremos hacer uso de websockets, donde requerimos que nuestra aplicacion pueda resolver peticiones de larga duracion o en el uso de tiempo real.
Instalacion
Como otra cualquier libreria esta debe existir en nuestro entorno virtual y se puede solo necesitamos instalar lo siguiente.
pipenv install channels
piepnv install channels_redis
Nuestro proyecto necesita una un nuevo archivo routing.py, el cual nos servira para poder declarar nuestra rutas de, este lo podemos guardar el directorio principal del proyecto. Por ejemplo en booktime/routing.py
El contenido debe ser el siguiente
from channels.routing import ProtocolTypeRouter
application = ProtocolTypeRouter({
})
De igual forma debemos agregarlo a nuestra lista de INSTALLED_APPS y las siguientes configuraciones
INSTALLED_APPS = [
'channels',
...
]
ASGI_APPLICATION = "booktime.routing.application"
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
'hosts': [('127.0.0.1', 6379)],
},
},
}
Estructura
Como antes se menciona en el libro Django hace el uso de:
- Urls
- Vistas
- Modelos
- Templates
A lo cual es necesario que demos por hecho que con Channels eso cambia un poco.
- Urls -> routing
- Vistas -> Consumers
Donde podemos seguir teniendo el mismo flujo de desarrollo. De igual forma este tiene sus propios MIDDLEWARE.
Comentario
Como el libro lo menciona podemos crear proyectos robustos con Django dado que nos provee de muchas librerias que podemos usar, esto de una forma facil.