🧪 Ejercicios: Desarrollo Backend con Python y Flask
Registro de usuarios con Flask
Ruta que permite registrar usuarios con validación y hash de contraseña:
@auth_bp.route('/register', methods=['POST'])
def register():
data = request.get_json()
username = data.get('username')
password = data.get('password')
if not username or not password:
return jsonify({"error": "Faltan campos requeridos"}), 400
conn = get_connection()
cursor = conn.cursor()
hashed = generate_password_hash(password, method='pbkdf2:sha256', salt_length=8)
cursor.execute("INSERT INTO users (username, password, tolerancia, nivel_tolerancia) VALUES (%s, %s, %s, %s)",
(username, hashed, 0.5, 0.5)) # Valores por defecto
conn.commit()
return jsonify({"msg": "Usuario registrado exitosamente"}), 201
Validación de perfil y actualización
Actualización de nombre visible y tolerancia con validación:
@profile_bp.route('/profile', methods=['PUT'])
@jwt_required()
def update_profile():
user_id = get_jwt_identity()
data = request.get_json()
nombre_visible = data.get("nombre_visible")
nivel_tolerancia = float(data.get("nivel_tolerancia"))
if not (0.0 <= nivel_tolerancia <= 1.0):
return jsonify({"error": "Nivel fuera de rango"}), 400
conn = get_connection()
cursor = conn.cursor()
cursor.execute("UPDATE users SET nombre_visible=%s, nivel_tolerancia=%s WHERE id=%s",
(nombre_visible, nivel_tolerancia, user_id))
conn.commit()
return jsonify({"msg": "Perfil actualizado exitosamente"})
Evaluación de toxicidad en texto
Simulación de análisis de toxicidad en mensajes de usuario:
def evaluar_toxicidad(texto):
palabras_toxicas = ["odio", "tonto", "estúpido"]
for palabra in palabras_toxicas:
if palabra in texto.lower():
return 0.9 # Muy tóxico
return 0.1 # No tóxico
Exportación de datos a PDF en React
Función para exportar contenido como PDF usando html2pdf.js:
const exportarPDF = () => {
const element = document.getElementById("contenedor-pdf");
const options = {
margin: 0.5,
filename: "reporte_financiero.pdf",
image: { type: "jpeg", quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: "in", format: "letter", orientation: "portrait" },
};
html2pdf().set(options).from(element).save();
};
Configuración de JWT en Flask
Configuración básica para proteger rutas con JWT:
from flask_jwt_extended import JWTManager
app = Flask(__name__)
app.config["JWT_SECRET_KEY"] = "clave_secreta_123"
jwt = JWTManager(app)
@app.route('/protegido')
@jwt_required()
def protegido():
usuario_id = get_jwt_identity()
return jsonify({"mensaje": f"Acceso válido para el usuario {usuario_id}"})
← Volver