En este tema, aprenderás cómo crear y manejar páginas de error personalizadas en Flask. Las páginas de error personalizadas no solo mejoran la experiencia del usuario, sino que también pueden proporcionar información útil sobre lo que salió mal y cómo solucionarlo.

Conceptos Clave

  1. Errores HTTP Comunes: Los errores más comunes que puedes personalizar son:

    • 404 Not Found
    • 500 Internal Server Error
    • 403 Forbidden
    • 401 Unauthorized
  2. Manejo de Errores en Flask: Flask proporciona una forma sencilla de manejar errores mediante el uso de decoradores.

  3. Plantillas de Error: Utilizar Jinja2 para crear plantillas de error personalizadas.

Paso a Paso para Crear Páginas de Error Personalizadas

  1. Configuración Básica

Primero, asegúrate de tener una aplicación Flask básica configurada. Si no la tienes, sigue estos pasos:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return "Bienvenido a la página principal"

if __name__ == '__main__':
    app.run(debug=True)

  1. Creación de Plantillas de Error

Crea una carpeta llamada templates en el directorio raíz de tu proyecto. Dentro de esta carpeta, crea archivos HTML para cada página de error que desees personalizar.

404.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>404 Not Found</title>
</head>
<body>
    <h1>404 Not Found</h1>
    <p>Lo sentimos, la página que estás buscando no existe.</p>
</body>
</html>

500.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>500 Internal Server Error</title>
</head>
<body>
    <h1>500 Internal Server Error</h1>
    <p>Algo salió mal en el servidor. Por favor, inténtalo de nuevo más tarde.</p>
</body>
</html>

  1. Manejo de Errores en Flask

Utiliza el decorador @app.errorhandler para manejar los errores y renderizar las plantillas personalizadas.

@app.errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404

@app.errorhandler(500)
def internal_server_error(e):
    return render_template('500.html'), 500

  1. Prueba de las Páginas de Error

Para probar las páginas de error, puedes intentar acceder a una URL que no exista para ver la página 404, o forzar un error en el servidor para ver la página 500.

Forzando un Error 404

Accede a una URL inexistente, por ejemplo: http://127.0.0.1:5000/nonexistent

Forzando un Error 500

Puedes forzar un error 500 levantando una excepción en una ruta:

@app.route('/cause-error')
def cause_error():
    raise Exception("Forzando un error 500")

Luego, accede a http://127.0.0.1:5000/cause-error.

Ejercicio Práctico

Ejercicio 1: Crear una Página de Error 403 Personalizada

  1. Crea una plantilla 403.html en la carpeta templates con el siguiente contenido:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>403 Forbidden</title>
</head>
<body>
    <h1>403 Forbidden</h1>
    <p>No tienes permiso para acceder a esta página.</p>
</body>
</html>
  1. Añade un manejador de errores para el código 403 en tu aplicación Flask:
@app.errorhandler(403)
def forbidden(e):
    return render_template('403.html'), 403
  1. Prueba la página de error 403 levantando una excepción Forbidden en una ruta:
from werkzeug.exceptions import Forbidden

@app.route('/forbidden')
def cause_forbidden():
    raise Forbidden("Forzando un error 403")

Luego, accede a http://127.0.0.1:5000/forbidden.

Solución

Si has seguido los pasos correctamente, deberías ver la página de error 403 personalizada cuando accedas a la ruta /forbidden.

Conclusión

En esta sección, has aprendido cómo crear y manejar páginas de error personalizadas en Flask. Esto no solo mejora la experiencia del usuario, sino que también proporciona una forma más profesional de manejar errores en tu aplicación web. En el siguiente tema, exploraremos el registro y la depuración en Flask para ayudarte a identificar y solucionar problemas de manera más eficiente.

Curso de Desarrollo Web con Flask

Módulo 1: Introducción a Flask

Módulo 2: Conceptos Básicos de Flask

Módulo 3: Formularios y Entrada de Usuario

Módulo 4: Integración de Bases de Datos

Módulo 5: Autenticación de Usuarios

Módulo 6: Conceptos Avanzados de Flask

Módulo 7: APIs RESTful con Flask

Módulo 8: Despliegue y Producción

Módulo 9: Pruebas y Mejores Prácticas

Módulo 10: Extensiones y Ecosistema de Flask

© Copyright 2024. Todos los derechos reservados