Un marco web es una biblioteca de código que hace que el desarrollo web sea más rápido y fácil proporcionando patrones comunes para la construcción de aplicaciones web fiables, escalables y mantenibles. Desde principios de la década de 2000, los proyectos profesionales de desarrollo web siempre utilizan un marco de trabajo web existente, excepto en situaciones muy inusuales.
¿Por qué son útiles los marcos de trabajo web?
Los marcos de trabajo web encapsulan lo que los desarrolladores han aprendido durante los últimos veinte años al programar sitios y aplicaciones para la web. Los frameworks facilitan la reutilización de código para operaciones HTTP comunes y la estructuración de proyectos para que otros desarrolladores con conocimientos del framework puedan construir y mantener rápidamente la aplicación.
Funcionalidad común de los frameworks web
Los frameworks proporcionan funcionalidad en su código o a través de extensiones para realizar operaciones comunes necesarias para ejecutar aplicaciones web. Estas operaciones comunes incluyen:
- Enrutamiento de URL
- Manejo y validación de formularios de entrada
- HTML, XML, JSON y otros formatos de salida con un motor de plantillas
- Configuración de la conexión de la base de datos y manipulación de datos persistentes a través de un mapeador objeto-relacional (ORM)
- Seguridad web contraFalsificación de solicitudes en sitios cruzados (CSRF), SQL Injection, Cross-site Scripting (XSS) y otros ataques maliciosos comunes
- Almacenamiento y recuperación de sesiones
No todos los frameworks web incluyen código para todas las funcionalidades anteriores.Los frameworks se sitúan en el espectro que va desde la ejecución de un único caso de uso hasta la provisión de todas las características conocidas de los frameworks web a todos los desarrolladores. Algunos marcos adoptan el enfoque de «baterías incluidas», donde todo lo posible viene incluido con el marco, mientras que otros tienen un paquete básico mínimo que es susceptible de extensiones proporcionadas por otros paquetes.
Por ejemplo, el marco de aplicación web Django incluye la capa Django ORM que permite a un desarrollador escribir operaciones de lectura, escritura, consulta y eliminación de bases de datos relacionales en código Python en lugar de SQL.Sin embargo, el ORM de Django no puede funcionar sin una modificación significativa en bases de datos no relacionales (NoSQL) comoMongoDB o Cassandra.
Algunos otros frameworks web como Flask yPyramid son más fáciles de usar con bases de datos no relacionales mediante la incorporación de bibliotecas externas de Python.Hay un espectro entre la funcionalidad mínima con fácil extensibilidad en un extremo y la inclusión de todo en el framework con una estrecha integración en el otro extremo.
¿Tengo que usar un framework web?
Si usas o no un framework web en tu proyecto depende de tuexperiencia con el desarrollo web y lo que estás tratando de lograr. Si eres un programador principiante y sólo quieres trabajar en una aplicación web como proyecto de aprendizaje, entonces un framework puede ayudarte a entender los conceptos mencionados anteriormente, como el enrutamiento de la URL, la manipulación de datos y la autenticación que son comunes a la mayoría de las aplicaciones web.
Por otro lado, si eres un programador experimentado con una importante experiencia en el desarrollo web, puedes sentir que los frameworks existentes no se ajustan a los requisitos de tu proyecto. En ese caso, puedes mezclar y combinar librerías de código abierto como Werkzeug forWSGI plumbing con tu propio código para crear tu propio framework. Todavía hay mucho espacio en el ecosistema de Python para nuevos frameworks que satisfagan las necesidades de los desarrolladores web que no son satisfechas por Django, Flask, Pyramid, Bottle y muchos otros.
En resumen, si necesitas o no usar un framework web para construir una aplicación web depende de tu experiencia y de lo que estés tratando de lograr.Usar un framework web para construir una aplicación web ciertamente no es necesario, pero hará la vida de la mayoría de los desarrolladores más fácil en muchos casos.
Comparando frameworks web
Talk Python to Me tuvo un episodio de podcast con una comparación detallada de los frameworks Django, Flask, Tornado y Pyramid.
¿Tienes curiosidad por saber cómo se estructura el código de un proyecto Django en comparación con Flask? Echa un vistazo a este tutorial de aplicación web de Django y luego ve la misma aplicación construida con Flask.
También hay un repositorio llamadocompare-python-web-frameworksdonde se está codificando la misma aplicación web con diferentes webframeworks de Python, motores de plantillas y mapeadores relacionales de objetos.
Recursos para frameworks web
-
Construir tu propio framework web de Python es una manera impresionante de aprender cómo funciona el WSGI y las muchas otras piezas que se combinan para hacer que los frameworks web sean útiles para los desarrolladores web.
-
12 peticiones por segundo examina cómo el framework web tradicionalmente síncronoFlask se compara con un framework asíncrono comoSanic en un benchmark artificial y simple. Los resultados hacen parecer que Sanic es mucho más rápido que Flask, pero una vez que se añade una cantidad básica de funcionalidad a un proyecto, incluyendo consultas a bases de datos y plantillas, los resultados se igualan. Miguel Grinbergal tiene una gran lectura con resultados más amplios en este artículo en el que pide a los lectores que ignoren todos los puntos de referencia de rendimiento web, incluido éste.
-
Cuando se está aprendiendo a utilizar uno o más frameworks web es útil tener una idea de lo que el código bajo las cubiertas está haciendo. Este post sobre la construcción de un sencillo marco de trabajo en Python desde cero muestra cómo las conexiones HTTP, el enrutamiento y las solicitudes pueden funcionar en sólo 320 líneas de código. Este post es impresionante a pesar de que el marco resultante es una simplificación de lo que los marcos como Django, Flask y Pyramid permiten a los desarrolladores realizar.
- Parte 1: Manejo de peticiones
- Parte 2: Rutas, manejadores basados en clases y pruebas unitarias
- Parte 3: Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the»What is a web framework and how does it compare to LAMP?»question on Stack Overflow.
-
Another great series that digs behind the web framework magic is»Web Application from Scratch». The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid: Choosing a Python Web Frameworkcontiene información de fondo y comparaciones de código para aplicaciones web similares construidas en estos tres grandes frameworks de Python.
-
Esta fascinante entrada de blog echa un vistazo a la complejidad del código de varios frameworks web de Pythonproporcionando visualizaciones basadas en sus bases de código.
-
Los benchmarks de los frameworks web de Python son una prueba de la capacidad de respuesta de un framework con la codificación de un objeto aJSON y su devolución como respuesta, así como la recuperación de datos de la base de datos y su renderización en una plantilla. No hubo resultados concluyentes, pero el resultado es divertido de leer, sin embargo.
-
¿Qué frameworks web utilizas y por qué son impresionantes? Es interesante ver lo que a los programadores de otros lenguajes les gusta y no les gusta de su conjunto de frameworks web en comparación con los principales frameworks de Python.
-
Esta pregunta votada por los usuarios & sitio de respuestas preguntó «¿Cuáles son los mejores frameworks web de Python de propósito general utilizables en producción?».Los votos no son tan importantes como la lista de los muchos frameworksque están disponibles para los desarrolladores de Python.
-
Django vs. Flask en 2019: qué framework elegirobserva los mejores casos de uso para Django y Flask junto con lo que los hace únicos, desde un punto de vista educativo y de desarrollo.
-
11 nuevos frameworks web de Pythontiene una breve reseña sobre varios frameworks más recientes que aún están surgiendo, como Sanic, Masonite y Molten.
También hay otro tutorial más reciente de varias partes sobre la construcción de su propio marco web en Python. Esta serie se basa en el proyectoalcazar que el autor estácodificando para aprender:
Lista de comprobación para el aprendizaje de frameworks web
-
Elige un framework web de Python importante (se recomienda Django oFlask) y quédate con él. Cuando estás empezando es mejor aprender un framework primero en lugar de ir dando tumbos tratando de entender todos los frameworks.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.