Django vs Flask

Cuando desarrollas para web utilizando Python, te encuentras que existen son unos pesos pesados: Django, Pyramid, Bottle y Flask. No son los únicos, por supuesto. Pero si son los más utilizados por la comunidad. Todos comparten la premisa de ofrecer un conjunto de herramientas que ayudan a un rápido desarrollo, con el máximo rendimiento posible y una buena documentación. Pero no solo de intenciones se trabaja. A la hora de la verdad todas destacan y pecan en ciertos puntos. No hay Framework perfecto, como no hay lenguaje ideal. Por eso es importante saber elegir el adecuado.

He trabajado en varios proyectos con Django y Flask. E incluso he enseñado ambos como docente. Y a día de hoy tengo una visión bastante clara. Para que es bueno cada uno y cuando no hay que utilizarlo. Por lo que a continuación voy a dejar mi humilde opinión con respecto a estos dos titanes. Un Django contra Flask en rendimiento. Pero no rendimiento en tiempos de CPUs, sino en productividad. Como herramienta para crear en el menor tiempo posible. Porque no todo se mide en respuestas por segundo.

Django

Pros

  • Fantástica documentación y mil ejemplos en la red.
  • Funcionalidades para todo lo que puedas desear de serie.
  • Estructura de proyecto autogenerado.
  • Script, llamado manage.py, para gestionar las tareas más comunes.
  • Sistema integrado para la internacionalización (sitios multidioma).
  • Herramientas de Unit Test integradas.
  • Conectividad para bases de datos (ORM).
  • Sockets (Channels).
  • Panel de Administración para gestionar la base de datos.

Contras

  • Lento a la hora de renderizar.
  • La documentación es tan extensa que puede llegar a ser confusa.
  • Muchos libros y vídeos para novatos pero poco para expertos.
  • Te da el proyecto muy cerrado.
  • El salto de dificultad para realizar un API REST.
  • Costoso de empezar un proyecto sencillo.
  • La implementación de Sockets es compleja de usar.

Flask

Pros

  • Sencillo.
  • Documentación clara y práctica.
  • Rápido. A la hora de renderizar puede ser hasta 3 veces más rápido que Django.
  • Fácil de realizar un API REST.
  • La estructura del proyecto es flexible.
  • Ideal para aprender a desarrollar en web.

Contras

  • Según necesites herramientas, tendrás que ir instalándolas.
  • Aunque existan bibliotecas (mal llamadas librerías), tendrás que construirte todo lo que necesites.
  • Pocos libros.
  • Complicado realizar tareas sencillas. Como migraciones, Unit Test o internalizaciones.
  • El ORM para conectar con la base de datos, Sqlalchemy, es externo.
  • No hay tantos plugins en la red como Django.

Conclusión

Django esta más orientado para proyectos en equipo o para no arriesgarte a la hora de realizar un trabajo. Perfectamente preparado para desarrollos grandes que necesiten realizar tareas comunes. Es sencillo y cómodo. Eso sí, es un framework que nunca llegarás a dominarlo del todo pero que te dará todo lo que necesites.

Flask podría ser muy válido para servicios (APIs, gran carga, muchas visitas…). Sobretodo para proyectos altamente personalizados o sencillos. Como un blog o una tienda. Se desarrolla rápido al principio pero según vas ampliando necesidades va aumentando la curva de aprendizaje.

Pero si tuvieras que elegir, yo te recomendaría utilizar Django para un proyecto orientado a un cliente final y Flask para crear APIs o muy a medida. Ambos son compatibles y te dará una visión práctica a la hora de enfrentarte a nuevos retos. Aunque parezcan enemigos son más bien primos. Dominarlos te hará mejor desarrollador. Además, ¡es muy bonito aprender cosas nuevas!