Flask vs Django

F

En este artículo, echaremos un vistazo a dos de los frameworks web más populares en Python: Django y Flask.

Aquí, cubriremos cómo se compara cada uno de estos marcos al observar sus curvas de aprendizaje, qué tan fácil es comenzar. A continuación, también veremos cómo estos dos se enfrentan entre sí para concluir cuándo usar uno de ellos.

Empezando

Una de las formas más fáciles de comparar dos marcos es instalándolos y tomando nota de la facilidad con la que un usuario puede empezar a utilizarlos, que es exactamente lo que haremos a continuación. Intentaremos configurar Django y Flask en una máquina Linux y crearemos una aplicación para ver qué tan fácil (o difícil) es el proceso con cada uno.

Configurando Django

En esta sección, configuraremos Django en una máquina con Linux. La mejor manera de comenzar con cualquier marco de Python es utilizando entornos virtuales. Lo instalaremos usando pip .

$ sudo apt-get install python3-pip
$ pip3 install virtualenv
$ virtualenv --python=`which python3` ~/.virtualenvs/django_env

Nota : Si el pip3comando le da un error, es posible que deba agregarle el prefijo sudopara que funcione.

Una vez que terminamos de configurar nuestro entorno virtual, que hemos nombrado django_env, debemos activarlo para comenzar a usarlo:

$ source ~/.virtualenvs/django_env/bin/activate

Una vez activado, finalmente podemos instalar Django:

$ pip install Django

Supongamos que nuestro proyecto se llama mysite. Cree un nuevo directorio e ingréselo, ejecute los siguientes comandos:

$ mkdir mysite
$ cd mysite
$ django-admin startproject mysite

Si inspecciona el proyecto resultante, la estructura de su directorio se mostrará como:

mysite/
  manage.py 
  mysite/
    __init__.py 
    settings.py 
    urls.py 
    wsgi.py

Echemos un vistazo a lo que es significativo sobre cada uno de los directorios y archivos que se crearon.

  • El directorio raíz mysite / es el directorio contenedor de nuestro proyecto
  • manage.py es una herramienta de línea de comandos que nos permite trabajar con el proyecto de diferentes formas
  • mysite / directorio es el paquete Python de nuestro código de proyecto
  • mysite / __ init__.py es un archivo que informa a Python que el directorio actual debe considerarse un paquete de Python
  • mysite / settings.py contendrá las propiedades de configuración del proyecto actual
  • mysite / urls.py es un archivo de Python que contiene las definiciones de URL para este proyecto
  • mysite / wsgi.py actúa como una entrada para un servidor web WSGI que reenvía solicitudes a su proyecto

Desde aquí, podemos ejecutar la aplicación utilizando la herramienta manage.py. El siguiente comando realiza algunas verificaciones del sistema, verifica las migraciones de la base de datos y algunas otras cosas antes de ejecutar su servidor:

$ python manage.py runserver

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

September 20, 2017 - 15:50:53
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Nota : La ejecución de su servidor de esta manera está pensada solo para el desarrollo y no para entornos de producción.

Para comprobar su aplicación, diríjase a http: // localhost: 8000 / , donde debería ver una página que dice “¡Funcionó!”.

Pero espera, ¡todavía no has terminado! Para crear realmente cualquier página / funcionalidad en su sitio, necesita crear una aplicación dentro de su proyecto. Pero, ¿por qué necesitas una aplicación? En Django, las aplicaciones son aplicaciones web que hacen algo, que podría ser un blog, un foro o un sistema de comentarios. El proyecto es una colección de sus aplicaciones, así como la configuración de las aplicaciones y el sitio web completo.

Entonces, para crear su aplicación, muévase al directorio de su proyecto y ejecute el siguiente comando:

$ cd mysite
$ python manage.py startapp myapp

Esto creará otra estructura de directorio donde realmente puede administrar sus modelos, vistas, etc.

manage.py
myapp/
  __init__.py
  admin.py
  apps.py
  migrations/
  models.py
  tests.py
  views.py
mysite/
  __init__.py 
  settings.py 
  urls.py 
  wsgi.py

Desde aquí, debe configurar sus vistas views.pyy el enrutamiento de URL urls.py, que guardaremos para otro tutorial.

Pero entiendes el punto, ¿verdad? Se necesitan algunos comandos y bastantes archivos para que su proyecto Django esté en funcionamiento.

Configuración de Flask

Al igual que Django, también usaremos un entorno virtual con Flask . Por tanto, los comandos para activar un entorno virtual seguirán siendo los mismos que antes. Después de eso, en lugar de instalar Django, instalaremos Flask.

$ pip install Flask

Una vez que se completa la instalación, podemos comenzar a crear nuestra aplicación Flask. Ahora, a diferencia de Django, Flask no tiene una estructura de directorios complicada. La estructura de su proyecto Flask depende totalmente de usted.

Tomando prestado un ejemplo de la página de inicio de Flask, puede crear una aplicación Flask ejecutable a partir de un solo archivo:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

Y ejecutar la aplicación es tan fácil como configurarla:

$ FLASK_APP=hello.py flask run
 * Running on http://localhost:5000/

Visitar la URL http: // localhost: 5000 / debería mostrar el texto “¡Hola mundo!” en su navegador.

Le animo a que busque algunas aplicaciones de muestra en la página de inicio de Flask para obtener más información. Aprender con el ejemplo es una de las mejores formas de empezar a trabajar rápidamente.

El marco que “gana” en esta área realmente depende de sus necesidades y experiencia. Django puede ser más favorable para los principiantes, ya que toma decisiones por ti (es decir, cómo estructurar tu aplicación), mientras que en Flask debes manejar esto tú mismo.

Por otro lado, Flask es más sencillo de poner en marcha ya que requiere muy poco para ponerse en marcha. Se puede componer una aplicación Flask completa a partir de un solo archivo. Las compensaciones realmente no dependen de lo que más necesita.

Curva de aprendizaje

En cuanto a la curva de aprendizaje, como vimos en el último apartado con Flask, fue muy fácil empezar. La aplicación no requiere una estructura de directorios complicada en la que deba recordar qué directorio / archivo hace qué. En su lugar, puede agregar archivos y directorios a medida que avanza de acuerdo con su uso. De esto se trata Flask, como un micro-framework para el desarrollo web.

Django, por otro lado, tiene una curva de aprendizaje un poco más alta ya que es más “exigente” acerca de cómo se configuran y funcionan las cosas. Debido a esto, necesita tomar más tiempo para aprender a componer módulos y trabajar dentro de los límites del marco.

Sin embargo, esto no es del todo malo, ya que le permite conectar fácilmente componentes de terceros a su aplicación sin tener que hacer ningún trabajo para integrarlos.

Empleabilidad

¿Cuál de estos marcos te ayudará a conseguir un trabajo? Para muchos desarrolladores, esta es una de las preguntas más importantes con respecto a ciertas bibliotecas y marcos: ¿cuál me ayudará a ser contratado?

Django tiene bastantes empresas grandes en su currículum, lo que se debe a que muchas empresas que usan Python para el desarrollo web tienden a usar (o al menos comenzaron con) Django para impulsar su sitio. Django, al ser un marco completo, a menudo se usa al principio del desarrollo porque obtienes muchos más recursos y potencia con él de inmediato.

Estas son solo algunas empresas que usan (o han usado) Django para sus sitios:

  • Pinterest
  • Instagram
  • Disqus
  • NASA

El matraz es un poco más difícil de medir aquí, principalmente por la forma en que se usa. Flask tiende a usarse más para microservicios , lo que dificulta saber qué empresas lo están usando. Además, es menos probable que las empresas con una arquitectura de microservicios digan que su servicio está “impulsado por Flask”, ya que es probable que tengan muchos servicios utilizando potencialmente muchos marcos diferentes.

Sin embargo, existen indicios de quién usa Flask en función de ofertas de trabajo, charlas técnicas, publicaciones de blogs, etc. Por eso, sabemos que las siguientes empresas han usado Flask en algún lugar de su infraestructura de backend:

  • Twilio
  • Linkedin
  • Pinterest
  • Uber
  • Mailgun

Si bien Django puede ser más popular entre las empresas, Flask es posiblemente más común entre las empresas más centradas en la tecnología, ya que es más probable que utilicen microservicios y, por lo tanto, micro marcos como Flask.

Tamaño y alcance del proyecto

Nuestra comparación de cada marco puede volverse muy subjetiva gracias a muchos factores diferentes, como el alcance del proyecto, la experiencia del desarrollador, el tipo de proyecto, etc. Si el proyecto es bastante pequeño y no necesita toda la sobrecarga que viene con Django, entonces Flask es la opción ideal para comenzar y hacer algo muy rápidamente.

Sin embargo, si el proyecto es de mayor duración y alcance, es probable que Django sea el camino a seguir, ya que ya incluye gran parte de lo que necesita. Básicamente, esto significa que muchos componentes comunes de un servicio web / sitio web ya vienen con Django o ya están disponibles a través de software de código abierto de terceros. En algunos casos, puede simplemente crear un proyecto de Django, conectar un montón de componentes, crear sus vistas / plantillas y listo.

Si bien elogiamos a Django por su extensibilidad, no podemos ignorar que Flask tiene algunas extensiones propias. Si bien no tienen un alcance tan grande como Django (y muchas de estas extensiones son estándar en Django), es un paso en la dirección correcta.

Los componentes complementarios de Django pueden ser tan grandes como un complemento de blog, o tan pequeños como una pequeña validación de entrada de middleware. La mayoría de las extensiones de Flask son pequeños componentes de middleware, lo que es mejor que nada y muy útil, considerando el tamaño promedio de los proyectos de Flask.

Limitaciones

Cada pieza de tecnología tiene sus problemas, y estos marcos no son diferentes. Entonces, antes de elegir cuál usar, es posible que desee saber qué desventajas tiene cada uno, de lo que hablaremos en esta sección.

Django

Entonces, ¿cuáles son los aspectos de Django que funcionan en su contra para ser seleccionado como su marco de elección?

Django es un proyecto muy grande. Una vez que un desarrollador, especialmente los principiantes, comienza a aprender Django, es fácil para ellos perderse en el código fuente, las características integradas y los componentes que proporciona, sin siquiera usarlos en una aplicación.

Django es un marco bastante grande para implementar en casos de uso simples, ya que le oculta gran parte del control. Si quieres usar algo que no es “estándar” en Django, entonces tienes que hacer algo de trabajo extra para hacerlo.

Comprender los componentes en Django puede ser un poco difícil y complicado a veces y puede llevar a decisiones difíciles, como decidir si un componente existente funcionará para su caso de uso, o si terminará causándole más trabajo del que vale.

Matraz

Ahora que hemos visto algunos de los problemas con Django, no nos olvidemos de Flask. Dado que el marco de Flask es tan pequeño, no hay mucho de qué quejarse. Bueno, excepto por ese hecho ahí mismo: es tan pequeño.

Flask es un micro-framework, lo que significa que solo proporciona la funcionalidad básica para comenzar. Esto no significa que no pueda ser poderoso y no se pueda escalar, solo significa que tendrá que crear gran parte de la funcionalidad de su servicio usted mismo. Esto significa que deberá manejar la integración de su base de datos, validación de datos, servicio de archivos, etc.

Si bien esto podría considerarse una ventaja para aquellos que desean tener control sobre todo, también significa que le llevará más tiempo configurar un sitio web completamente funcional.

Elegir Flask o Django

Si bien es fácil hablar sobre lo que hace y no hace cada marco, intentemos hacer una comparación más directa de cada uno, lo que haremos en esta sección.

Cuando la simplicidad es un factor, Flask es el camino a seguir. Permite mucho más control sobre su aplicación y le permite decidir cómo desea implementar las cosas en un proyecto. En contraste con esto, Django proporciona una experiencia más inclusiva, como proporcionar un panel de administración predeterminado para sus datos, un ORM en la parte superior de su base de datos y protección contra cosas como inyección SQL, secuencias de comandos entre sitios, CSRF, etc.

Si pone mucho énfasis en el soporte de la comunidad, entonces Django probablemente sea mejor en este sentido dada su historia. Ha existido desde 2005, mientras que Flask se creó en 2010. En el momento de escribir este artículo, Django tiene alrededor de 3.5 veces más preguntas / respuestas en Stack Overflow que Flask (aproximadamente 2600 preguntas de Django frente a 750 de Flask).

El marco de Flask es relativamente ligero. De hecho, es casi 2,5 veces más pequeño que Django en términos de cantidad de código. Esa es una gran diferencia, especialmente si necesita comprender el funcionamiento interno de su marco web. En este aspecto, Flask será mucho más fácil de leer y comprender para la mayoría de los desarrolladores.

Flask debe seleccionarse para el desarrollo si necesita un control total sobre su aplicación, qué ORM desea usar, qué base de datos necesita integrar con excelentes oportunidades para aprender más sobre los servicios web. Django, por otro lado, es mejor cuando hay un camino más claro para crear lo que quieres, o estás creando algo que se ha hecho antes. Por ejemplo, un blog sería un buen caso de uso para Django.

Aprende más

¿Quiere obtener más información sobre cualquiera de estos marcos? Hay bastantes recursos disponibles. Aquí hay algunos cursos que he encontrado que son bastante útiles y que lo pondrán al día mucho más rápido:

Bootcamp para desarrolladores web de Python y Django Full Stack

API REST con Flask y Python

De lo contrario, también puede obtener un gran comienzo visitando los sitios web respectivos de cada marco:

De cualquier manera, lo más importante es que los pruebe, trabaje con algunos ejemplos y decida por su cuenta cuál es el mejor para usted.

Conclusión

En este artículo, comparamos los dos frameworks web, Django y Flask, observando sus diferentes propiedades y configurando un simple “¡Hola mundo!” aplicación con cada uno.

Es posible que descubra que si es nuevo en el desarrollo web y decide aprender Django, puede que le lleve un poco más de tiempo comprender realmente qué hacen todos los componentes subyacentes y cómo cambiarlos para que realmente hagan lo que quiere. Pero también hay muchos aspectos positivos, y una vez que domines Django, acabará ahorrándote mucho tiempo al final, dada su enorme lista de componentes y el amplio apoyo de la comunidad.

Solo se puede realizar una comparación más avanzada para cualquier marco con casos de uso y escenarios avanzados. Solo sepa que realmente no puede equivocarse con ninguno de los dos, y aprender cualquiera de ellos lo preparará bien para encontrar un trabajo.

Si necesita una recomendación, personalmente iría con Flask. Al aprender un marco que no te oculte tantas cosas, puedes aprender mucho, mucho más. Una vez que tenga una mejor comprensión de los conceptos centrales del desarrollo web y HTTP, puede comenzar a usar complementos que abstraigan esto de usted. Pero tener esa base sólida de comprensión es más importante desde el principio, en mi opinión.

¿Qué marco utiliza y por qué? ¡Háznoslo saber en los comentarios!

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad