Saltar a contenido

Introducción a la serie × Público objetivo#

iThome Ironman 2024

Este es el artículo número 1 de la serie de tutoriales de Django Ninja.

En esta serie de 30 días, exploraremos en detalle la implementación básica de Django Ninja. A través de explicaciones escritas y código de proyectos de ejemplo, te guiaremos paso a paso para familiarizarte con este framework potente y flexible para el desarrollo de API en Django.

Como una estrella emergente en el ecosistema de Django (nacido en 2020), Django Ninja combina la estabilidad de Django con las características modernas de FastAPI: los type hints de Python (implementados mediante Pydantic). Esta combinación de fortalezas ofrece a los desarrolladores una experiencia de desarrollo de API sólida, eficiente e intuitiva.

Ya seas un desarrollador experimentado en Django o un principiante que acaba de ingresar al mundo del desarrollo de API, esta serie te brindará experiencias y técnicas prácticas para trabajar con Django Ninja.

Comenzaremos con una introducción al contexto y los conceptos fundamentales, e iremos profundizando en cada parte de Django Ninja para ayudarte a dominar rápidamente esta herramienta moderna de desarrollo de API.

Proyecto de ejemplo en GitHub#

👉 Django-Ninja-Tutorial


Habilidades previas recomendadas#

La orientación de esta serie es de «nivel inicial», pero aquí «nivel inicial» se refiere a iniciar en el framework Django Ninja.

Por lo tanto, para aprovechar al máximo el contenido de los tutoriales y el código del proyecto de ejemplo, se recomienda que los lectores cuenten con las siguientes habilidades:

  • Conocimientos básicos de Python: Familiaridad con la sintaxis de Python; preferiblemente con experiencia previa en desarrollo con Python.
  • Bases de Django: Comprender los componentes básicos de Django, tales como ORM, Views, arquitectura MTV, etc. Sin embargo, no es necesario conocer la parte de Templates, ya que desarrollaremos API.
  • Conceptos de HTTP y Web API: Saber qué son HTTP, Web API y la separación entre frontend y backend, además de tener una comprensión básica de los principios de diseño de API RESTful.
  • Control de versiones: Para poder aprovechar y manipular el proyecto de ejemplo, se requiere estar familiarizado con las operaciones básicas de Git y GitHub.

Contar con estas habilidades te ayudará a comprender y aplicar mejor el contenido de esta serie. Si no estás muy familiarizado con algunos conceptos, no te preocupes: explicaremos lo necesario cuando sea oportuno.


Público objetivo#

Esta serie es «especialmente adecuada» para los siguientes lectores. Observa a cuál de estos grupos perteneces.

1. Principiantes en backend con Python#

Personas que desean aprender sobre desarrollo backend en Python, especialmente cómo construir API de alta calidad.

2. Desarrolladores de Django#

Tanto si eres desarrollador full-stack como de backend, todos los desarrolladores de Django son el público objetivo de esta serie.

3. Desarrolladores de FastAPI#

Para los lectores que ya tienen bases en el desarrollo con FastAPI, aprender Django Ninja debería ser facilísimo 🤚

4. Desarrolladores que buscan aumentar su eficiencia en el desarrollo de API#

Django Ninja ofrece una forma concisa y rápida de desarrollar API.

Uno de sus mayores atractivos es la «generación automática de documentación de API a través de Pydantic y type hints de Python», lo que evita que vuelvas a preocuparte por cómo redactar documentación de API de calidad.

Documentación de API generada automáticamente

Para desarrolladores que no vienen de Python y desean implementar funciones no muy grandes en proyectos pequeños, Django Ninja ofrece una opción sumamente atractiva.

5. Desarrolladores de Python que desean familiarizarse con Type Hints#

Como mencioné en las «Notas sobre «Robust Python»: Cómo incorporar Type Hints de forma efectiva»:

Al escribir en Django Ninja (o FastAPI), por naturaleza tienes que escribir una gran cantidad de type hints para generar documentación de API precisa y razonable. Por ende, la resistencia a añadir type hints al resto del proyecto, como a funciones o clases personalizadas, se reduce considerablemente.

Desde mi punto de vista, adoptar frameworks basados en Pydantic es como usar las ruedas de entrenamiento de una bicicleta: empezar a escribir type hints te encamina claramente en una dirección positiva.

Si las type hints de Python carecen de un escenario de aplicación práctica, a menudo provocan la sensación de que escribirlas es agotador o incluso algo superfluo, lo cual es muy natural.

Y el mejor escenario de aplicación es aquel en el que la propia herramienta te exige escribirlas y, a la vez, puedes obtener beneficios directos de ello; y eso es precisamente lo que hace Django Ninja.


Enfoque y concesiones#

En esta serie, nos enfocaremos en las características principales y las aplicaciones prácticas de Django Ninja, con el objetivo de ayudar a los desarrolladores a comenzar rápidamente y construir sus API.

Para garantizar la utilidad y el enfoque del contenido, hemos realizado algunas concesiones en los temas tratados:

  • Enfoque en el desarrollo de API: Cómo utilizar Django Ninja para definir rutas, procesar solicitudes y respuestas, etc. Estas funciones representan las necesidades más comunes en aplicaciones reales y son lo primero que los principiantes deben dominar.
  • Foco en operaciones síncronas: Aunque Django Ninja admite operaciones asíncronas (async), el soporte propio de Django para asincronía todavía se encuentra en proceso de perfeccionamiento gradual.
  • Para evitar que los principiantes se confundan con detalles técnicos innecesarios, solo cubriremos operaciones síncronas.
  • Esto no solo simplifica el flujo de desarrollo, sino que también garantiza la coherencia con los hábitos de uso habituales de Django en la actualidad.
  • Omisión de partes no relacionadas con el desarrollo de API: Al ser Django un framework completo e integral, incluye muchas características que van más allá del ámbito del desarrollo de API, como la internacionalización (i18n), el motor de plantillas, entre otros.
  • Aunque estas características son importantes para ciertos escenarios de aplicación, tienen baja relevancia con el tema de esta serie, por lo que optaremos por omitirlas.
  • Pruebas unitarias, despliegue, contenedorización, entre otros, se mencionarán de manera selectiva y no se presentarán de forma exhaustiva.
  • Énfasis especial en la creación y calidad de la documentación de API: Una documentación de API clara y de alta calidad es una parte indispensable del desarrollo de software moderno, especialmente cuando se trabaja en equipo o se exponen API a terceros.
  • Django Ninja cuenta con la capacidad de «generar automáticamente documentación de API a partir del código», y profundizaremos en cómo aprovechar eficazmente esta función.
  • ¿A qué nos referimos con profundizar? A garantizar que la documentación de API no solo se genere automáticamente, sino que también posea un alto nivel de legibilidad y precisión, para alivio del equipo de frontend.

Del código a una documentación de API animada y fácil de leer


Resumen#

Tras comprender la orientación general de la serie, a continuación presentaré la estructura y organización de capítulos de esta serie, para que conozcas desde el principio los puntos clave de cada capítulo y sepas cómo aprender progresivamente las características principales de Django Ninja.

En el siguiente artículo, detallaré los ejes principales y puntos clave de cada capítulo, ayudándote a dominar la organización del contenido de toda la serie y prepararte adecuadamente para el aprendizaje posterior.