Un decorador en Flask es una función especial que se usa para modificar el comportamiento de otras funciones o métodos. En el contexto de Flask, los decoradores son muy comunes y se utilizan principalmente para asociar funciones con rutas o para agregar funcionalidades adicionales a las vistas y a la aplicación en general.
Flask permite usar decoradores para realizar tareas como:
El decorador más común en Flask es el de @app.route, que se usa para asociar una URL o ruta con una función de vista.
Esta función se ejecutará cuando un usuario acceda a esa URL.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "¡Hola, mundo!"
# Corriendo la app
if __name__ == '__main__':
app.run(debug=True, port=5000) En este caso, el decorador @app.route('/') indica que la función home() debe ejecutarse cuando un usuario visite la página principal (/).
Flask ofrece varios decoradores para realizar tareas antes o después de manejar una solicitud, como @app.before_request y @app.after_request.
Se ejecuta antes de cada solicitud, útil para configurar algo en cada petición (como autenticación).
@app.before_request
def before_request_func():
print("Esto se ejecuta antes de cada solicitud.") Se ejecuta después de que Flask haya procesado la solicitud, pero antes de enviar la respuesta al cliente.
@app.after_request
def after_request_func(response):
print("Esto se ejecuta después de cada solicitud.")
return response Puedes crear tus propios decoradores para agregar funcionalidades adicionales a las vistas. Por ejemplo, un decorador para verificar si un usuario está autenticado:
def require_login(f):
def wrap(*args, **kwargs):
if not session.get('logged_in'):
return redirect(url_for('login'))
return f(*args, **kwargs)
return wrap
@app.route('/profile')
@require_login
def profile():
return "Perfil del usuario" En resumen, los decoradores en Flask son herramientas poderosas que permiten añadir funcionalidades de manera sencilla y modular a tus vistas y la aplicación en general.