Primeros pasos con Flask, un microframework de Python — SitePoint

Noticias

HogarHogar / Noticias / Primeros pasos con Flask, un microframework de Python — SitePoint

Jan 28, 2024

Primeros pasos con Flask, un microframework de Python — SitePoint

En este artículo, presentaremos Flask, un microframework popular para Python que

En este artículo, presentaremos Flask, un popular microframework para Python que ofrece una alternativa al gigante Django.

Flask está diseñado para ser ligero y flexible, lo que permite a los desarrolladores crear aplicaciones web de forma rápida y sencilla. En este artículo, cubriremos qué es Flask, sus características clave, los beneficios de su API simple, su flexibilidad para admitir extensiones de terceros, las extensiones de Flask más comunes y cuándo es y cuándo no es un buen momento para usar Matraz.

Flask es un marco micro web escrito en Python que se utiliza para desarrollar aplicaciones web. Se basa en una filosofía simple de mantener las cosas simples y livianas, brindando a los desarrolladores solo las herramientas más importantes necesarias para crear aplicaciones web sin complejidad innecesaria.

Está construido sobre el kit de herramientas Werkzeug WSGI, que proporciona la funcionalidad de servidor web necesaria para manejar solicitudes y respuestas, y el motor de plantillas Jinja2, que le da a Flask la capacidad de manejar plantillas HTML, lo que permite a los desarrolladores crear aplicaciones web dinámicas.

Estas son algunas de las características clave de Flask que lo convierten en un excelente marco para trabajar:

En general, Flask proporciona un marco poderoso, flexible y simple para crear aplicaciones web. Es una buena opción tanto para desarrolladores web nuevos como experimentados, y es uno de los marcos web más populares en el ecosistema de desarrollo web de Python.

Ahora echemos un vistazo más detallado a algunas de las ventajas de usar Flask en el desarrollo.

Sencillez . La filosofía de diseño de Flask hace hincapié en la simplicidad, lo que facilita la comprensión y el uso por parte de los desarrolladores de cualquier nivel. Esto también significa que los desarrolladores tienen una curva de aprendizaje mínima, ya que solo necesitan aprender algunos conceptos y API para comenzar a crear aplicaciones web.

Flexibilidad . La naturaleza micro de Flask, que proporciona solo las funciones principales de un marco web, brinda a los desarrolladores el poder de personalizarlo y ampliarlo para que se adapte a sus requisitos utilizando extensiones de Flask o bibliotecas de terceros.

Documentación . La documentación de Flask es muy completa, con una buena cobertura de temas básicos a avanzados, lo que hace que sea muy fácil para los desarrolladores aprender a usar el marco.

Compatibilidad . Flask es compatible con una amplia gama de versiones de Python, lo que facilita su uso con las bases de código de Python existentes. También tiene soporte para múltiples servidores web, lo que facilita su implementación en una variedad de plataformas de alojamiento.

Desarrollo rápido . La simplicidad y la flexibilidad de Flask reducen el repetitivo necesario para configurar una aplicación, lo que permite a los desarrolladores comenzar rápidamente.

En la Web, Flask se usa de muchas maneras interesantes. Algunos ejemplos notables son:

La simplicidad y facilidad de uso de Flask lo convierten en una excelente opción para una amplia gama de proyectos web:

Si bien Flask es un gran marco y tiene una serie de ventajas y excelentes funciones, hay situaciones en las que estas funciones funcionan en su contra. Exploremos algunos de los proyectos que se adaptan mejor a otros tipos de marcos.

Proyectos que requieren funcionalidad integrada . Al ser un microframework, Flask solo proporciona los bits básicos necesarios para crear una aplicación web. Si un proyecto requiere, por ejemplo, una interfaz de administración, autenticación o un ORM, entonces Django es una mejor opción.

Proyectos con estrictos requisitos de seguridad . Como Flask es un marco flexible, tenemos que confiar en extensiones de terceros para implementar cierto nivel de seguridad en nuestras aplicaciones. Si bien esto ciertamente funciona, es mejor confiar en un marco más probado en batalla que adopte un enfoque más seguro, como Tornado o Twisted.

Proyectos que imponen algún estándar de codificación . Debido a la flexibilidad de Flask, el desarrollo de aplicaciones en él permite a los desarrolladores crear aplicaciones de la forma que consideren adecuada. Sin embargo, los marcos como Django aseguran que los desarrolladores sigan una convención particular, lo que significa que los desarrolladores pueden pasar de un proyecto a otro fácilmente.

Veamos ahora cómo comenzar con Flask, desde configurar el entorno de desarrollo hasta la instalación y, finalmente, poner en marcha una aplicación mínima.

Python tiene que estar instalado en la máquina de desarrollo. Aquí hay instrucciones para eso (aunque es posible que ya lo tengamos instalado).

Un entorno virtual es un entorno de Python aislado donde podemos instalar paquetes para un proyecto determinado sin afectar la instalación global de Python. (Aquí hay más información sobre por qué los entornos virtuales son útiles). Existen diferentes paquetes para crear entornos virtuales en Python, como virtualenv, venv o Conda.

En este artículo, usaremos virtualenv. Podemos instalarlo con el siguiente comando:

Una vez que se haya instalado virtualenv, podemos crear un directorio donde residirá nuestra aplicación Flask. Podemos llamar al directorio como queramos, además de Flask, ya que eso causará conflictos. Llamaremos al nuestro matraz_intro:

Luego, cambie a ese directorio para que podamos comenzar a usarlo:

En ese directorio, ahora creemos nuestro entorno virtual, usando el siguiente comando:

El comando anterior crea un entorno virtual y lo llama myenv. Vamos a activarlo para que podamos instalar Flask en él. Para activar el entorno virtual enlinuxoMac OS, use el siguiente comando:

Enventanas, usa este comando:

Una vez que nuestro entorno virtual se haya activado, mostrará el nombre del entorno virtual en el indicador de shell, similar al siguiente resultado:

Dentro de nuestro entorno virtual activado, podemos continuar e instalar Flask, usando el siguiente comando:

Una vez que Flask termine de instalarse, sigamos adelante y creemos una aplicación mínima. Crearemos un módulo que contendrá nuestra aplicación Flask. Por simplicidad, llamémoslo hola.py. EnlinuxoMac OSpodemos usar el siguiente comando para crear el archivo en nuestro directorio Flash_intro:

El comando anterior crea un archivo llamado hello.py. También podríamos usar un entorno de desarrollo para crear el archivo. Una vez que se haya creado el archivo, ingrese el siguiente código y guárdelo:

En el código anterior, importamos la clase Flask del módulo Flask, luego creamos una instancia de Flask que llamamos app y pasamos la variable __name__.

Luego tenemos el decorador de rutas @app.route("\"), lo que significa que la función hello_world() se activará cuando alguien visite la ruta raíz de nuestra aplicación una vez que se ejecute.

Hay varias formas en que podemos ejecutar la aplicación, así que veamos algunas de ellas. La primera forma es proporcionar el comando Flask con una serie de argumentos: --app, luego el nombre del módulo que contiene, nuestra aplicación Flask y luego ejecutar. Vea abajo:

Usando el ejemplo anterior para ejecutar nuestra aplicación de muestra:

Eso ejecutará nuestra aplicación en el puerto predeterminado 5000, por lo que la aplicación estará disponible en http://localhost:5000/ o en http://127.0.0.1:5000/. Si queremos que la aplicación esté disponible en un puerto diferente, podemos especificar el puerto usando la opción -p o --port. Por ejemplo:

Eso ejecutará el servidor en el puerto 8080. La otra forma en que podemos ejecutar la aplicación es simplemente usando los comandos de ejecución del matraz. Sin embargo, para que podamos hacer eso, debemos decirle a Flask el nombre del módulo que contendrá la instancia de Flask, y lo hacemos configurando la variable de entorno FLASK_APP. Entonces, en nuestro caso, la aplicación Flask está contenida en un archivo llamado hello.py. Así que podemos configurarlo de esta manera:

Ahora que hemos configurado la variable de entorno FLASK_APP, podemos ejecutar el servidor de desarrollo de la siguiente manera:

Con ese código, ahora tenemos una aplicación web ejecutándose. Esto demuestra la filosofía central de Flask: no necesitamos mucho código repetitivo para que las cosas funcionen. Sin embargo, la aplicación que configuramos arriba no es muy funcional ni útil, ya que solo muestra la cadena "¡Hola mundo!" en nuestra página web. Para hacer algo más útil, podemos recurrir a las plantillas. Veremos cómo manejarlos a continuación.

Plantillas de matraces son una forma de crear páginas web dinámicas que pueden mostrar contenido diferente en función de varios factores, como datos de una base de datos o entrada del usuario. Las plantillas en Flask son una combinación de HTML y marcadores de posición especiales llamadosvariables de plantillaque se reemplazan con valores reales en tiempo de ejecución.

Las plantillas se almacenan en el directorio de plantillas. Entonces, para usar plantillas, necesitamos importar el método render_template() desde el matraz. El método render_template() toma un nombre de plantilla y cualquier dato opcional que deba pasarse a la plantilla.

Veamos un ejemplo de una función que usa una plantilla para renderizar una página web:

En el ejemplo anterior, tenemos una función de vista, index(), que está vinculada a la URL raíz ("/") por el decorador @app.route(). La función tiene dos variables, título y mensaje. Finalmente, pasamos la plantilla index.html a render_template(), junto con las variables de título y mensaje.

Para que el código anterior funcione, necesitamos tener una plantilla index.html que resida en un directorio de plantillas. Entonces la plantilla se verá así:

En el archivo index.html, los marcadores de posición {{title}} y {{ message }} se reemplazan con los valores pasados ​​a la plantilla en el método render_template().

Las plantillas también pueden incluir una lógica más compleja, como declaraciones if y bucles for, que permiten generar páginas más dinámicas.

Por lo tanto, las plantillas en Flask brindan a los desarrolladores una opción muy poderosa para crear páginas web dinámicas ricas en información generada por el usuario.

La mayoría de las aplicaciones web tendrán más de una URL, por lo que debemos tener una forma de saber qué función maneja qué URL. En Flask, este mapeo se conoce comoenrutamiento — el proceso de enlace o mapeo de URL para ver funciones. Vincular URL para ver funciones permite que la aplicación maneje diferentes tipos de solicitudes, como GET, POST, PUT, DELETE y más. También permite que la aplicación maneje múltiples solicitudes de diferentes clientes.

Para configurar rutas en Flask, usamos el decorador route(). El decorador vincula una URL a una función de vista, de modo que cuando un usuario visita una URL que existe en nuestra aplicación, Flask activa la función de vista asociada para manejar la solicitud.

Veamos un ejemplo:

En el ejemplo anterior, definimos una URL acerca de (/about). Cuando la aplicación recibe una solicitud de URL acerca de, Flask llama a la función about(), que devuelve la cadena "Esta es la página acerca de".

Hasta ahora, aunque estos ejemplos devuelven páginas diferentes, todos solo usan la solicitud GET HTTP. Para poder manejar cualquier solicitud específica, podemos especificar el método HTTP como un argumento opcional para el decorador route().

Veamos un ejemplo de una solicitud PUT:

En este ejemplo, definimos una ruta que maneja una solicitud PUT para actualizar los detalles del usuario dado su ID de usuario. Usamos en la ruta para indicar que el ID de usuario debe ser un número entero.

En la función update_user(), obtenemos los datos del usuario del cuerpo de la solicitud mediante el método request.get_json(). Hacemos algo con los datos del usuario, como actualizar el usuario en la base de datos, y luego devolvemos una respuesta que indica el éxito o el fracaso junto con un código de estado HTTP (un 200 en este caso para mostrar el éxito).

En general, el enrutamiento permite que Flask pueda manejar diferentes tipos de solicitudes y permite que nuestra aplicación maneje y actúe sobre los datos de manera diferente, según la URL que visite un usuario.

Además de mostrar datos a los usuarios, las plantillas de Flask también pueden recibir información de los usuarios para su posterior procesamiento o almacenamiento. Para eso, Flask proporciona soporte integrado para procesar formularios HTML y manejar la entrada del usuario. Los formularios Flask se basan en la biblioteca WTForms, que proporciona una forma flexible y potente de manejar datos de formularios y realizar validaciones. Sin embargo, la biblioteca no forma parte de la instalación estándar de Flask, por lo que debemos instalarla con el siguiente comando:

Una vez que hayamos instalado WTForms, para usar formularios en Flask, debemos definir una clase de formulario que heredará de Flask_wtf.FlaskForm. La clase contendrá los campos que estarán en el formulario y cualquier regla de validación que se les deba aplicar.

Veamos un ejemplo de un formulario de inicio de sesión:

En el ejemplo anterior, definimos un formulario de inicio de sesión con dos campos, correo electrónico y contraseña, y un botón de envío. También tenemos un argumento de validadores que se usa para especificar reglas de validación para cada campo. Por ejemplo, en este caso requerimos que el campo de correo electrónico contenga una dirección de correo electrónico válida y que el campo de contraseña contenga una contraseña de no menos de seis caracteres.

Una vez que hemos definido la clase de formulario, podemos usarla en la función de vista de inicio de sesión para representar el formulario y procesar los datos del formulario enviados por el usuario. Veamos un ejemplo de la función de vista:

En el ejemplo anterior, tenemos una vista de inicio de sesión que acepta dos métodos HTTP (GET y POST), por lo que cuando los usuarios acceden a la URL desde un navegador, LoginForm se representa como un formulario HTML utilizando el método render_template, y cuando un usuario envía el formulario verificamos si el formulario es válido usando el método validate_on_submit. Si el formulario es válido, accedemos al correo electrónico y contraseña.

El formulario login.html podría verse así:

La plantilla anterior mostrará los campos de correo electrónico y contraseña, junto con sus etiquetas, y un botón de envío con el texto "Iniciar sesión". El campo form.csrf_token se incluye para evitar ataques de falsificación de solicitudes entre sitios (CSRF). Los bucles {% for %} se utilizan para mostrar cualquier error de validación que pueda ocurrir.

Al usar formularios de Flask, tenemos una forma poderosa de manejar la entrada del usuario y podremos validar los datos que ingresan.

Como hemos visto, Flask es un microframework que solo incluye las partes más importantes necesarias para crear una aplicación web. Sin embargo, si necesitamos agregar una funcionalidad que Flask no ofrece de inmediato, debemos agregar paquetes a la instalación. Las extensiones Flask son la forma en que proporcionamos esta funcionalidad adicional. Simplemente podemos instalar el paquete que necesitamos. Hay muchas extensiones hechas por la comunidad de Flask.

Estos son algunos de los más populares:

Hay cientos de extensiones creadas por la comunidad de Flask para manejar diferentes funcionalidades. El uso de las extensiones es generalmente sencillo. Primero, necesitamos instalar la extensión que queremos usando pip.

Veamos un ejemplo del uso de Flask-SQLAlchemy. Primero, necesitamos instalarlo:

A continuación, tenemos que configurarlo. Por ejemplo:

En el ejemplo anterior, tenemos un modelo de usuario con un nombre de usuario y un campo de correo electrónico. También configuramos SQLALCHEMY_DATABASE_URI, lo que indica que estamos usando una base de datos SQLite ubicada en example.db. Con ese conjunto, ahora tenemos acceso al objeto db que nos permite interactuar con la base de datos. Por ejemplo, podríamos crear un nuevo usuario y agregarlo a la base de datos, así:

Con las extensiones de Flask, nuestra aplicación puede tener más funciones de las que normalmente tendría con la implementación principal de Flask.

En este artículo, presentamos Flask, un marco web ligero y flexible para Python. Discutimos las ventajas de usar Flask para el desarrollo web, incluida su simplicidad, flexibilidad y facilidad de uso. También cubrimos cómo configurar un entorno de desarrollo, crear rutas, usar plantillas, manejar formularios y usar extensiones como Flask-SQLAlchemy.

En resumen, Flask es una excelente opción para crear aplicaciones web de cualquier tamaño, desde pequeños proyectos personales hasta aplicaciones comerciales a gran escala. Es fácil de aprender y usar, pero también ofrece funciones avanzadas a través de sus muchas extensiones.

Si está interesado en obtener más información sobre Flask, aquí hay algunos recursos adicionales:

Si desea obtener más información sobre Django y Flask y sus mejores casos de uso, consulte Desarrollo web de Python con Django y Flask.

Kabaki es un ingeniero de software full-stack y un escritor técnico apasionado por crear experiencias digitales innovadoras. Cuando no está programando, disfruta compartiendo conocimientos con otros escribiendo artículos técnicos para ayudar a los desarrolladores a perfeccionar sus habilidades.

En este artículo, presentaremos Flask, un popular microframework para Python que ofrece una alternativa al gigante Django. Simplicidad Flexibilidad Documentación Compatibilidad Desarrollo rápido PgAdmin Twilio Pinterest Creación de prototipos Creación de API RESTful Aplicaciones de comercio electrónico Finanzas IA Proyectos que requieren funcionalidad integrada Proyectos con estrictos requisitos de seguridad Proyectos que imponen algunos estándares de codificación Linux macOS Windows Linux macOS Flask plantillas plantilla variables enrutamiento Flask-SQLAlchemy Flask- Iniciar sesión Flask-Mail