Si me hubieras dicho hace unos años que elegiría Django de Python como mi framework de elección número uno para proyectos de clientes, no te habría creído.

En ese entonces, prefería frameworks ligeros como Flask y Express por tu flexibilidad y el control extra que me ofrecieron.

¿Qué cambió?

¡Parte de ello fue que me contrataron para trabajar en Django! La otra parte era cansarse de configurar las mismas características una y otra vez desde cero para diferentes empresas: ORM para la base de datos, migraciones, sistemas de autenticación, correos electrónicos, etc. Lleva mucho tiempo configurar todas estas características y funcionar correctamente.

Bueno, Django me da todo esto con una configuración mínima fuera de la caja. Sí, es increíble.

Con Django, puedo crear aplicaciones mucho más rápidamente sin sacrificar características. La experiencia del desarrollador también es bastante buena, y no sólo porque Python es impresionante. También es porque hay buenas herramientas de depuración, sesiones ya está configurado y hay un servidor que se reinicia automáticamente con cada cambio en el código.

Podría seguir y seguir con todas las buenas características de Django, pero aquí voy a enumerar mi top 5. Espero que esto despierte tu interés para que quiera probar Django para sus propias empresas y proyectos.

Interfaz de administración de Django

Estoy enumerando esto primero porque es mi característica favorita número uno que viene en Django.

Muchos clientes necesitan tener una vista en tu aplicación para poder administrar usuarios, datos o contenido en las páginas. Por lo general, el cliente no será técnico o tendrá tiempo suficiente para sumergirse en el código real y realizar cambios.

Entonces, ¿cuál es la mejor manera de manejar esta situación?

La interfaz de administración de Django es una gran solución. Sin ninguna configuración adicional, obtiene un área de administración potente, totalmente personalizable y protegida por inicio de sesión que muestra todos los datos de tu aplicación.

Screen-Shot-2021-01-31-at-9.43.58-PM
Image from Stack Overflow

Los datos de esta área de administración incluye cualquier tabla que quieres mostrar allí, así como todas las tablas de paquetes de terceros como bibliotecas de autenticación.

Django tiene una Autenticación incorporada

Se necesita algún tipo de autenticación en casi todas las aplicaciones, por lo que el mercado tiene muchas herramientas, servicios y bibliotecas para usar. Debido a que hay tantas opciones, puede ser difícil elegir una. Incluso si utiliza un servicio administrado, conectarlo no siempre es fácil.

Bueno, Django viene con autenticación incorporada a través de sesiones. ¿Qué sucede si desea usar tokens? Simplemente instale la biblioteca de Django REST Framework (DRF) que viene con autenticación de token.

Personalmente me gusta usar DRF con la biblioteca adicional dj-rest-auth para características extras como tokens que caducan. De cualquier manera, todas estas piezas funcionan perfectamente juntas en el ecosistema de Django y requieren muy poca configuración.

Este es un ejemplo de un repositorio de Django donde tengo la configuración de autenticación de token (y autenticación de GitHub) en Django con Django REST Framework.

Cualquier sistema de autenticación que utilice en un proyecto de Django también utilizará ORM. Hablemos de algunos de los beneficios de eso a continuación.

ORM

¿Alguna vez ha intentado configurar manualmente una ORM para conectar tu base de datos a tu aplicación? Por ejemplo, SQLAlchemy, TypeORM o Sequelize. Incluso con buena documentación, no es fácil. Tiene que conseguir diferentes tipos de consultas para trabajar, así como migraciones, seeding, y mucho más.

Django te proporciona todo eso fuera de la caja. Simplemente conecta las credenciales de tu base de datos favorita - Postgres, MySQL, Mongo, etc. - y Django se encarga del resto. Puede crear modelos e interactuar con ellos a través de la misma interfaz de Python sin importar la base de datos que elija.

Sólo una nota aquí: a menos que usted es un maestro de SQL o tiene un caso muy especial, tú debes estar usando un ORM para interactuar con bases de datos en cada aplicación.

Todas las características listadas hasta ahora no son exclusivas solo de Django de Python. La diferencia es que la mayoría de los frameworks le permiten configurar tu propio ORM, autenticación, etc. Django hace todo esto con muy poco esfuerzo. Esto significa que puede enviar características, MVPs y aplicaciones más rápidamente.

Velocidad de Desarrollo

Python es un lenguaje que se utiliza comúnmente para crear prototipos y desarrollar aplicaciones rápidamente. Django le da la velocidad y la potencia de Python con muchas características integradas adicionales para ayudar a crear aplicaciones web y APIs mucho más rápido.

Tomar decisiones e investigar herramientas y bibliotecas lleva mucho tiempo en lugar de escribir código. Django tiene formas bien documentadas para hacer las cosas, lo que elimina todo el tiempo extra que podrías usar en averiguar una buena solución por ti mismo.

Desde el arranque un proyecto para ti, hasta crear consultas complejas y la implementación de su aplicación, Django lo tiene cubierto con una gran documentación y una gran comunidad para ayudarlo si se queda atascado.

Sin embargo, no son solo las bibliotecas principales de Django las que pueden ayudarlo a crear aplicaciones más rápidamente. Django también tiene miles de plugins con una API común para que pueda tener ciertas expectativas sobre cómo utilizar cualquiera de ellos en tu proyecto.

Django Plugins

¿Deseas crear un CMS? Django tiene un plugin para eso. En realidad, bastantes de ellos. Si buscas en Github y DjangoPackages.org, encontrarás una gran cantidad de soluciones para casi cualquier caso de uso.

Aquí algunos de mis favoritos:

  • Django Rest Framework: Routers, serializers, y otras harramientas para crear APIs simples.
  • Django Graphene: Facilita añadir la funcionalidad GraphQL a las aplicaciones de Django.
  • Wagtail: Añade una hermosa interfaz de estilo CMS a Django con un montón de características integradas para casos comunes de uso de CMS
  • Django Crispy Forms: Si está creando aplicaciones full-stack, este paquete hace que trabajar con formularios dentro de plantillas sea mucho más limpio y fácil.
  • Django Debug Toolbar: Esto es necesario para los proyectos de Django. Puede depurar todo, desde consultas SQL hasta plantillas mediante esta herramienta.

Espero haberte dado una prueba suficiente de Django para que lo pruebes por ti mismo. Déjame saber como te va :)

Trabajo con un gran equipo como un senior software developer en RocketBuild! Construimos muchos proyectos interesantes en Django, React y otras tecnologías.

Si quieres ver más contenidos de Django, Python, and JavaScript, echa un vistazo a mi canal de YouTube, Faraday Academy. O mantente en contacto conmigo en Twitter, @faradayacademy.

Traducido del artículo de Gwendolyn Faraday - What is Python's Django used for? 5 Key Reasons I Use the Django Framework for Client Projects