Modo de depuración de Flask

Salman Mehmood 15 febrero 2024
Modo de depuración de Flask

Aprenderemos, con esta explicación, un par de cosas que obtenemos cuando usamos el modo de depuración en Flask y cómo usar una extensión que proporciona una barra de herramientas de depuración.

Habilitar el modo de depuración en Flask

El modo de depuración es para entornos de desarrollo. Cuando está desarrollando su aplicación, puede usarla, pero si tiene una versión en vivo de su aplicación, desea desactivar el modo de depuración.

Creamos una aplicación Flask básica y activamos el modo de depuración dentro del método run().

from flask import Flask

app = Flask(__name__)


@app.route("/", methods=["GET"])
def Basic_DEBUG():
    return "Hi there, debug mode is on"


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

Hay otras formas de hacerlo, pero por ahora, le mostraremos esta forma sencilla de depurar la aplicación Flask. En la siguiente sección, aprenderemos otra forma de depurarlo.

Comencemos el servidor usando este archivo, y podemos ver que nuestro servidor se inicia con el modo de depuración. Ahora, si queremos hacer un cambio en el archivo y una vez que lo guardemos, el modo de depuración detectará los cambios y reiniciará el servidor automáticamente.

No tenemos que salir de esto y reiniciarlo de nuevo. Solo tenemos que refrescar la página.

Modo de depuración de Flask Salida 1

Veamos qué sucede cuando algo sale mal mientras la depuración está activa. Hagamos una excepción:

from flask import Flask

app = Flask(__name__)


@app.route("/", methods=["GET"])
def Basic_DEBUG():
    CHECK = 6 / 0
    return "Hi there, debug mode is on"


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

Cuando lo guardamos y refrescamos la página, arroja un ZeroDivisionError, y podemos ver un seguimiento de dónde falló. Podemos ver la fuente de donde falló; cuando hacemos clic aquí, nos muestra la fuente y tiene un modo interactivo.

Abre una pequeña consola, y puede hacer algunos cambios aquí y ver por qué no querría esto en un entorno de producción porque cualquiera puede ejecutar el código aquí.

Salida 2 del modo de depuración del Flask

Renderice la herramienta de depuración con la ayuda de DebugToolbarExtension

Vamos a demostrar cómo funciona esto y dónde lo encontraremos útil cuando desarrollemos nuestras aplicaciones Flask. Primero necesitaremos instalar este paquete usando el siguiente comando.

pip install flask-debugtoolbar

Una vez que esté instalado, tendremos que configurarlo en la aplicación Flask; es una barra de herramientas visual y funciona con una plantilla. La única forma en que puede usar esto es si está usando plantillas jinja, por eso incluiremos render_template() y crearemos un archivo HTML.

Ahora vamos a tratar con la extensión de la barra de herramientas de depuración. Para usarlo, lo primero que debemos importar es DebugToolbarExtension; entonces, necesitamos establecer un par de configuraciones.

Estableceremos la propiedad debug igual a True, y debemos declarar esto antes de crear una instancia de la barra de herramientas. Entonces el otro valor de configuración que necesitamos es una SECRET_KEY.

Luego necesitaremos crear una instancia de la barra de herramientas de depuración llamada DebugToolbarExtension() y pasarla a la aplicación.

TBAR = DebugToolbarExtension(app)

Una vez que instanciamos la barra de herramientas de depuración, la barra de herramientas se inyectará automáticamente en cualquier plantilla que haya devuelto como respuesta.

from flask import Flask, render_template
from flask_debugtoolbar import DebugToolbarExtension

app = Flask(__name__)

app.debug = True
app.config["SECRET_KEY"] = "TEST_KEY"
TBAR = DebugToolbarExtension(app)


@app.route("/", methods=["GET"])
def DEBUG_ToolBar():
    return render_template("index.html")


if __name__ == "__main__":
    app.run()

Cuando actualizamos la página, la barra de herramientas aparece en el lado derecho. Nos muestra un montón de cosas útiles que podemos necesitar al depurar.

Lo primero son las versiones; nos dice que versión estamos usando, y la siguiente es el tiempo que nos dice cuanto tiempo se tardó en generar esta página. Puedes explorar todas estas variables por ti mismo.

Modo de depuración de Flask Salida 3

Podemos ver cómo esta función es útil a pesar de que no tenemos que mirar dentro de nuestro depurador en la consola o las herramientas de desarrollo del navegador.

Código fuente de la plantilla:

<html>
    <head>
        <body>
            <h1>Hi there, this is debug toolbar</h1>
        </body>
    </head>
</html>
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn