¿Cómo convertirse en dev back-end: Django?
El desarrollo backend es un área de la programación dedicada a crear la lógica, el funcionamiento y la comunicación de los sistemas web. El backend es responsable de procesar las solicitudes de los usuarios, interactuar con las bases de datos, proporcionar API y garantizar la seguridad y el rendimiento de las aplicaciones.
Un desarrollador backend necesita dominar diversas habilidades y tecnologías, como lenguajes de programación, frameworks, protocolos, arquitecturas, patrones de diseño, pruebas, entre otros. En este artículo, nos centraremos en uno de los lenguajes y marcos de desarrollo backend más populares y versátiles: Python y Django.
Python es un lenguaje multiparadigma interpretado de alto nivel con una sintaxis simple y elegante. Python cuenta con una amplia variedad de bibliotecas y módulos que facilitan la implementación de diversas funcionalidades, desde análisis de datos hasta inteligencia artificial. Python también es un lenguaje ampliamente utilizado para el desarrollo web, especialmente con el framework Django.
Django es un framework web de código abierto, escrito en Python, que sigue el patrón MVC (Model-View-Controller) y ofrece una serie de características para facilitar la creación de aplicaciones web robustas, escalables y seguras. Django tiene un sistema ORM (Object-Relational Mapping) que le permite manipular bases de datos relacionales de una manera abstracta e intuitiva, un sistema de plantillas que le permite generar páginas HTML dinámicas, un sistema de autenticación y autorización que le permite administrar usuarios y permisos, un sistema de administración que le permite crear interfaces administrativas con pocas líneas de código, entre otros.
Para convertirse en desarrollador backend con Django, debe seguir algunos pasos y aprender algunos conceptos. Veamos cuáles son.
1. Aprender lo básico de Python
Antes de usar Django, es necesario tener una buena base en Python. Se recomienda aprender los conceptos fundamentales del lenguaje, como variables, tipos de datos, operadores, estructuras de control, funciones, clases, objetos, herencia, polimorfismo, excepciones, módulos, paquetes, etc.
Hay varios cursos, libros y tutoriales en línea que enseñan los conceptos básicos de Python. Algunos ejemplos son:
Además, es importante practicar lo que se aprende. Una buena forma de hacerlo es resolviendo ejercicios y desafíos de programación. Algunos sitios que ofrecen esto son:
2. Instalar y configurar el ambiente de desarrollo
Para usar Django, necesita instalar y configurar algunas herramientas en su computadora. Los principales son:
- Python: La última versión de Python es la 3.10. Puedes descargarla en su sitio oficial. Al instalar Python, asegúrate de marcar la opción Add Python to PATH para ejecutar comandos de Python en la terminal.
- Pip: Pip es el administrador de paquetes de Python que permite instalar y actualizar las bibliotecas y módulos que utilizará en su proyecto. Pip ya está instalado con Python, pero puedes verificar si está actualizado con el comando python -m pip install --upgrade pip.
- Virtualenv: Virtualenv es una herramienta que permite crear entornos virtuales aislados para cada proyecto. Esto evita conflictos entre las versiones y dependencias de las bibliotecas que utiliza. Puedes instalar Virtualenv con el comando pip install virtualenv.
- Django: Es un framework para crear aplicaciones web. Puedes instalar Django con el comando pip install django. La versión más reciente de Django es la 4.0.
- IDE: IDE es la abreviatura de Integrated Development Environment o Entorno de Desarrollo Integrado. Es un software que facilita la escritura, ejecución y depuración de su código. Hay varios IDE disponibles para Python y Django, pero uno de los más populares y completos es PyCharm. Puedes descargarlo en su sitio oficial. Existe una versión gratuita (Community) y una de pago (Professional).
Después de instalar estas herramientas, puedes crear tu primer proyecto Django. Para hacer esto, siga los siguientes pasos:
- Abre la terminal y navega hasta la carpeta donde deseas crear tu proyecto.
- Crea un entorno virtual con el comando virtualenv venv. Esto creará una carpeta llamada venv en tu carpeta actual.
- Activa el entorno virtual con el comando venv\Scripts\activate (Windows) o con source venv/bin/activate (Linux/Mac). Eso cambiará el prompt de la terminal para indicar que estás en el ambiente virtual.
- Instala Django en el ambiente virtual con el comando pip install django.
- Crea un proyecto Django con el comando django-admin startproject myproject. Esto creará una carpeta llamada myproject en tu carpeta actual, con algunos archivos y subcarpetas.
- Entra en la carpeta del proyecto con el comando cd myproject.
- Ejecuta el servidor de desarrollo de Django con el comando python manage.py runserver. Esto iniciará una aplicación web básica en el puerto 8000 de tu computadora.
- Abre tu navegador y escribe en la barra de direcciones http://localhost:8000/. Deberías ver una página con el título The install worked successfully! Congratulations! y un icono de Django. Esto significa que tu proyecto está funcionando correctamente.
3. Entender la estrutura y el funcionamiento de Django
Django sigue el patrón de arquitectura MVC (Model-View-Controller) que separa las responsabilidades de cada componente de la aplicación. En Django, estos componentes se llaman Model, View y Template.
- Model: Es la capa que representa los datos de la aplicación. Model define las clases que corresponden a las tablas de la base de datos, los atributos que corresponden a las columnas y los métodos que corresponden a las operaciones, así como las relaciones entre clases, como uno a uno, uno a muchos y muchos a muchos. Model utiliza el sistema ORM de Django para abstraer consultas SQL y facilitar la manipulación de datos.
- View: Es la capa que representa la lógica de la aplicación. View define las funciones o clases que reciben solicitudes de usuarios, procesan los datos, ejecutan reglas comerciales y devuelven respuestas. También define las URL que asignan cada solicitud a la función o clase correspondiente. En otro orden, View puede devolver diferentes tipos de respuestas como páginas HTML, archivos JSON, archivos CSV, imágenes, etc.
- Template: Es la capa que representa la presentación de la aplicación. Template define los archivos HTML que contienen los elementos visuales de la interfaz, como encabezado, pie de página, menús, formularios, tablas, etc. También puede contener etiquetas y filtros especiales de Django que permiten insertar datos dinámicos en las páginas como variables, loops, condicionales, etc.
Además de estos componentes principales, Django también cuenta con otros componentes auxiliares, como por ejemplo:
- Settings: Es el archivo que contiene la configuración global de la aplicación, como el nombre del proyecto, la base de datos utilizada, las aplicaciones instaladas, el middleware utilizado, etc.
- Admin: Es un sistema que le permite crear interfaces administrativas para gestionar los datos de la aplicación de forma rápida y sencilla. El administrador utiliza los modelos definidos en Model para generar automáticamente el listado, detallar, crear, editar y eliminar páginas de datos.
- Forms: Es un sistema que permite crear formularios para recopilar y validar datos de los usuarios de forma sencilla y segura. Forms utiliza los modelos definidos en Model para generar automáticamente campos de formulario y reglas de validación. Forms también le permite personalizar campos de formulario, validaciones, widgets, errores y estilos.
- Tests: Es un sistema que permite crear pruebas automatizadas para verificar el funcionamiento y calidad de la aplicación. Tests utiliza el framework unittest de Python para crear pruebas unitarias, de integración y de funcionalidad. Tests también permite utilizar herramientas externas para medir la cobertura, el rendimiento y la seguridad de las aplicaciones.
- Signals: Es un sistema que permite realizar acciones en respuesta a eventos que ocurren en la aplicación. Signals son mensajes que se envían cuando se guarda, cambia o elimina un modelo; cuando se crea, autentica o cierra sesión un usuario; cuando ocurre un error, etc. Signals permiten registrar funciones o clases que reciben estos mensajes y ejecutan alguna lógica, como enviar un correo electrónico, actualizar un caché, generar un registro, etc.
Para comprender mejor cómo funcionan estos componentes en la práctica, veamos un ejemplo de una aplicación Django simple que permite registrar y enumerar libros.
4. Crear una aplicación Django simple
Una de las ventajas de Django es que te permite crear aplicaciones modulares y reutilizables. Cada aplicación es un conjunto de archivos que contienen modelos, vistas, plantillas, formularios, pruebas y otros recursos relacionados con una funcionalidad específica de la aplicación general.
Para crear una aplicación Django, debes seguir algunos pasos:
- Genera la carpeta de la aplicación con el comando `python manage.py startapp books`. Esto creará una carpeta llamada books en la carpeta de tu proyecto, con algunos archivos y subcarpetas.
- Registrar la aplicación en el archivo settings.py del proyecto. Para esto, añade el nombre de la aplicación en la lista INSTALLED_APPS. Por ejemplo: `INSTALLED_APPS = ['books', 'django.contrib.admin', ...]`.
- Crear el modelo de la aplicación en el archivo models.py de la carpeta books. Para ello, define una clase que herede de models.Model y defina los atributos que correspondan a las columnas de la tabla de la base de datos. Por ejemplo:
- Crear la base de datos de la aplicación con el comando `python manage.py makemigrations books`. Esto generará un archivo en la carpeta migrations de la carpeta books, que contiene las instrucciones SQL para crear la tabla del modelo Book.
- Aplicar migraciones a la base de datos con el comando `python manage.py migrate`, lo cual ejecutará las instrucciones SQL en la base de datos para crear efectivamente la tabla del modelo Book.
- Crear la interfaz administrativa de la aplicación en el archivo admin.py de la carpeta books. Para ello, importa el modelo Book y regístralo con el comando: `admin.site.register(Book)`. Esto permitirá que manejes los libros en el sitio de administración de Django.
- Crea las views de la aplicación en el archivo views.py de la carpeta books. Para ello, define las funciones o clases que van a recebir las requisiciones de los usuarios y retornen las respuestas. Por ejemplo:
- Crear las URL de la aplicación en el archivo urls.py de la carpeta books. Para ello, importa las views y define las rutas que van a mapear cada requisición para la view correspondiente. Por ejemplo:
- Incluir las URL de la aplicación en el archivo urls.py del proyecto. Para ello, importa el módulo include y agrega una ruta que redireccione las requisiciones a la aplicación books. Por ejemplo:
- Crear los templates de la aplicación en la carpeta templates dentro de la carpeta books. Para ello, genera los archivos HTML que contendrán los elementos visuales de la interfaz usando las tags y filtros de Django para insertar datos dinámicos. Por ejemplo:
¡Listo! Ahora tienes una sencilla aplicación Django que te permite registrar y enumerar libros. Puedes probarla accediendo a las URL:
- http://localhost:8000/admin/ - Para acceder al sitio de administración de Django y administrar los libros. Necesitas crear un usuario administrador con el comando `python manage.py createsuperuser` y proporciona un nombre de usuario, correo electrónico y contraseña.
- http://localhost:8000/books/ - Para acceder a la página de inicio de la aplicación y ver todos los libros registrados.
- http://localhost:8000/books/1/ - Para acceder a la página de detalles de un libro específico, reemplace el 1 con la identificación del libro deseado.
5. Profundizar conocimientos y habilidades en Django
El ejemplo anterior es sólo una introducción a Django y muestra sólo algunas de las características básicas del framework. Para convertirte en dev backend usando Django, necesitas profundizar tus conocimientos y habilidades en varios aspectos como:
- Crear modelos más complejos, utilizando campos personalizados, validaciones personalizadas, métodos especiales, propiedades, señales, etc.
- Crear views más sofisticadas, usando clases basadas en vistas, mixins, decoradores, excepciones, etc.
- Crear plantillas más ricas, usando bloques, herencia, inclusión, etiquetas personalizadas, filtros personalizados, etc.
- Crear forms más avanzado, utilizando modelos basados en formularios, campos personalizados, validaciones personalizadas, widgets personalizados, etc.
- Crear tests más completos, utilizando pruebas unitarias, de integración y de funcionalidad., fixtures, mocks, etc.
- Usar otros recursos de Django como internacionalización, caché, sesiones, cookies, CSRF, middleware, logging, etc.
- Usar bibliotecas externas que complementan a Django como Django REST Framework (para crear APIs RESTful), Django Allauth (para autenticación social), Django Crispy Forms (para estilizar formularios), etc.
- Implantar y hospedar una aplicación Django en un servidor web real, usando herramientas como Git (para versionamiento de código), Heroku (para hospedaje en la nube), Gunicorn (para servidor web), Nginx (para proxy inverso), PostgreSQL (para bases de datos), etc.
Para profundizar sus conocimientos y habilidades en Django, hay varios recursos disponibles en línea. Algunos ejemplos son:
- Django - Documentación oficial
- Django Girls - Tutorial
- Django - Curso en video
- Django for Beginners - Libro
- Django for Professionals - Libro
- Django by Example - Libro
- Real Python - Django Tutorials
- Simple is Better Than Complex - Blog
Conclusión
En este artículo, vimos cómo convertirse en desarrollador backend en 2023 usando Django. Vimos qué es el desarrollo backend, qué es Django, cómo instalar y configurar el entorno de desarrollo, cómo entender la estructura y funcionamiento de Django, cómo crear una aplicación Django sencilla y cómo profundizar tus conocimientos y habilidades en Django.
Django es un framework web potente, flexible y divertido de usar. Con él podrás crear increíbles aplicaciones web, desde blogs y tiendas online hasta redes sociales y plataformas de aprendizaje. Django también es una excelente manera de aprender Python, uno de los lenguajes más populares y versátiles en la actualidad.
Espero que este artículo haya sido útil e inspirador para ti. Si te ha gustado, compártelo con tus amigos + Si tiene alguna pregunta o sugerencia, no dudes en contactarme. ¡Gracias por leer y hasta la próxima!
Referencias bibliográficas
DJANGO. Sitio oficial. https://www.djangoproject.com/
PYTHON. Sitio oficial. https://www.python.org/
PYCHARM. Sitio oficial. https://www.jetbrains.com/pycharm/.
WIKIPEDIA. Desarrollo web. https://pt.wikipedia.org/wiki/Desenvolvimento_web
WIKIPEDIA. MVC. https://pt.wikipedia.org/wiki/MVC
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.