Una de las razones por las que Python es una excelente opción para el desarrollo web es la variedad de marcos web disponibles en el lenguaje. Entre los más populares y útiles se encuentra Flask, que le permite comenzar de manera simple (“una gota a la vez”) pero crece con su aplicación para agregar casi todas las funciones que necesita. En este artículo, explicaremos cómo configurar y usando Flask 3.0 para aplicaciones web básicas. También abordaremos el uso de Jinja2 para crear plantillas y solucionar problemas comunes, como cambiar los tipos de respuesta y manejar redireccionamientos. Configurar FlaskFlask 3.0 es fácil de configurar. Utilice pip install flask para instalar Flask y todas sus dependencias, incluido el sistema de plantillas Jinja2. Como con cualquier marco de Python, es mejor crear un proyecto usando Flask dentro de un entorno virtual de Python. Esto aísla su proyecto de su instalación principal de Python y de otros proyectos que podrían usar Flask y sus dependencias (ya que podría encontrarse manteniendo diferentes versiones para diferentes proyectos). Tenga en cuenta que si desea instalar Flask con soporte para funciones asincrónicas o corrutinas, use el matraz de instalación pip[async]. En breve tendré más información sobre el uso de Flask con async. Una aplicación Flask básica Una aplicación Flask simple y de una ruta se puede escribir en solo unas pocas líneas de código. Guarde la siguiente aplicación de ejemplo simple en un archivo llamado app.py: from flask import Flask app = Flask(__name__) @app.route(«https://www.infoworld.com/») def home(): return «Hola , mundo» Esta aplicación no hace mucho: simplemente crea un sitio web con una única ruta que muestra «Hola, mundo» en el navegador. Esto es lo que hace cada elemento: La línea app = Flask(__name__) crea una nueva instancia de una aplicación Flask, llamada app. La clase Flask toma un argumento que es el nombre del módulo o paquete de la aplicación. Pasarlo __name__ (el nombre del módulo actual) es una forma rápida de usar el módulo actual como punto de partida de la aplicación. En teoría, puedes usar cualquier nombre, pero es habitual usar el nombre del módulo como predeterminado. El decorador app.route se utiliza para encapsular una función e indicar la función que se utilizará para entregar una respuesta para una ruta determinada. En este caso, la ruta es la raíz del sitio («https://www.infoworld.com/») y la respuesta es la cadena «Hola mundo». Para ejecutar la aplicación, use python -m flask run en el mismo directorio que app.py. Deberías ver algo como lo siguiente en la consola: * Entorno: producción ADVERTENCIA: Este es un servidor de desarrollo. No lo utilice en una implementación de producción. Utilice en su lugar un servidor WSGI de producción. * Modo de depuración: desactivado * Ejecutando en http://127.0.0.1:5000/ (Presione CTRL+C para salir) Si abre un navegador web en http://127.0.0.1:5000/, debería ver las palabras, “Hola mundo”. Tenga en cuenta que puede nombrar cualquier archivo principal de su aplicación Flask, pero llamarlo app.py permite que Flask lo reconozca automáticamente. Para usar un nombre diferente, primero debe configurar la variable de entorno FLASK_APP con el nombre del nuevo archivo menos su extensión (por ejemplo, hola para hola.py). Tenga en cuenta también que cuando ejecuta una aplicación Flask de esta manera, Vuelva a ejecutarlo utilizando el servidor de prueba integrado de Flask, que no es adecuado para implementaciones de producción. Pronto discutiremos cómo implementar Flask en producción. Las rutas y las variables de ruta en las aplicaciones FlaskWeb suelen utilizar componentes de una ruta como variables que se pasan a la función de ruta. Flask le permite hacer esto mediante una sintaxis especial de definición de ruta. En este ejemplo, donde tenemos una ruta en el formato /hola/ seguida de un nombre de usuario, el nombre se extrae y se pasa a la función como la variable nombre de usuario. @app.ruta(«/hola/
{% si nombre de usuario %}
Hola {{ nombre de usuario }}!
{% demás %}
¡Hola, seas quien seas!
{% endif %} Las plantillas de Jinja2 son una especie de lenguaje en sí mismas, pero este fragmento debería darle una idea de cómo funcionan. Los bloques delineados con {% %} contienen lógica de plantilla y los bloques con {{ }} contienen expresiones que se insertarán en ese punto. Cuando llamamos a esta plantilla con render_template arriba, pasamos nombre de usuario como argumento de palabra clave; Se haría lo mismo con cualquier otra variable que usemos. Tenga en cuenta que las plantillas de Jinja2 tienen restricciones en el código que se puede ejecutar dentro de ellas, por razones de seguridad. Por lo tanto, querrá realizar la mayor cantidad de procesamiento posible para una página determinada antes de pasarla a una plantilla. Manejadores de errores en Flask Para crear una ruta que maneje una clase particular de error del servidor, use el decorador de errorhandler: @app.errorhandler (404) def page_not_found(error): return f»error: {error}» Para esta aplicación, cada vez que se genera un error 404, el resultado devuelto al cliente será generado por la función page_not_found. El error es la excepción generada por la aplicación, por lo que puede extraer más detalles si es necesario y pasarlos de vuelta al cliente. Ejecución y depuración de Flask en producción El servidor de prueba de Flask mencionado anteriormente en este artículo no es adecuado para implementar Flask en producción. Para implementaciones de producción, utilice un servidor totalmente compatible con WSGI, con el objeto de aplicación creado por Flask() como la aplicación WSGI. La documentación de Flask tiene detalles sobre la implementación en las opciones de alojamiento más comunes, así como detalles sobre cómo alojar aplicaciones Flask usted mismo: por ejemplo, mediante mod_wsgi de Apache o mediante uWSGI en Nginx. Uso de async en FlaskOriginalmente, Flask no tenía soporte explícito para funciones o rutinas asincrónicas. Las corrutinas ahora son una característica estándar en Python y, a partir de la versión 2.0, Flask admite métodos asíncronos para controladores de rutas. Sin embargo, el soporte asíncrono en Flask viene como un complemento, por lo que debes usar pip install flask.[async] para instalar esta función. Aquí hay un ejemplo de una ruta asíncrona de Flask: @app.route(«/embed/
Source link
Deja una respuesta