Libro: Practical Django 2 and Channels 2

By valbornoz March 11, 2023, 3:50 p.m.

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?

  • Python 3.4 en adelante

  • Pipenv para crear entornos virtuales

  • Base de datos, podemos usar Mysql o Postgresql

¿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

  1. Lo primero que debemos hacer es destinar una carpeta donde guardaremos nuestro proyecto
mkdir booktime
  1. Nos posicionamos en nuestra carpeta creada anteriormente
cd booktime
  1. Creamos entorno con Django Instalado
pipenv --three install Django
  1. Ahora ya tenemos un entorno, debemos activarlo
pipenv shell
  1. 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

./manage.py runserver

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.