Redirección en Flask

Salman Mehmood 12 julio 2022
Redirección en Flask

Aprenderemos, con esta explicación, cómo usar la función redirect() para redirigir al usuario y veremos cómo podemos usarla para múltiples propósitos en Flask.

Redirigir al usuario con la ayuda de la función redirect() en Flask

En Flask, la redirección es bastante simple. Simplemente redirige a un usuario o alguien en su sitio mediante una solicitud o una API.

Hay diferentes formas de redirigir al usuario. Por ejemplo, si aterrizan en su página de inicio e inician sesión en su sitio, puede redirigirlos al área de membresía o puede redirigirlos a la página de recuperación de contraseña, donde lo desee.

En general, una redirección es una forma de enviar a las personas a la siguiente página desde el lado del servidor. Así que no tienen que iniciar la solicitud en esa página.

Antes de comenzar a escribir el código, le mostraremos aquí la sintaxis de la función redireccionar().

Sintaxis:

flask.redirect(location, code=302, Response=None)

Solo utilizaremos los dos primeros parámetros, location y code. La location es una URL y el code es el código de estado HTTP que se envía con la solicitud o la respuesta redirect().

Demostremos eso con algo de código. Aquí, configuraremos una aplicación Flask rápidamente y comenzaremos con la importación de Flask.

Configuraremos un par de rutas: una es crear una función index() con etiquetas header, y otra es una función MEMBERS() que también usa una etiqueta header con un punto final específico.

El primer ejemplo es la redirección entre páginas en nuestra aplicación. Creamos dos vistas o dos páginas, y queremos que alguien que navega al índice sea redirigido automáticamente a la página de miembros.

Entonces, usaremos la función redirect() junto con la función url_for(). La función redirect() tomará una ubicación para el primer parámetro, y este parámetro location tiene que ser la url_for().

Solo necesitamos escribir el nombre de la función dentro de url_for() que queremos, la función MEMBERS() genera la URL para los miembros, y luego esta función index() redirigirá al usuario a la página de los miembros.

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect(url_for("MEMBERS"))


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


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

Después de guardarlo, si ejecutamos esta aplicación usando la página de índice y cuando navegamos allí, nos redirige a la página de miembros.

Abra Herramientas para desarrolladores y veamos qué dice la red cuando ejecutamos esta página. Solicitamos el índice aquí, que nos da un estado de 302.

302 se usa típicamente cuando redirigimos a alguien; nos envía a la página de miembros, pero no solicitamos al servidor que hiciera esto.

Producción:

salida de redirección de Flask 1

También podemos cambiar el segundo parámetro a 404 como redirección, lo que sería extraño, pero podemos usarlo en cualquier condición. Iremos al índice, que nos dice que Deberías ser redirigido automáticamente a la URL de destino. Si no, haz clic en el enlace.

Es porque normalmente se usa un 404 para errores y no para redireccionamientos, pero si hacemos clic en ese enlace generado por Flask, nos envía al área de miembros. No necesita modificar el código de estado a menos que tenga un motivo específico; ten eso en mente.

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect(url_for("MEMBERS"), 404)


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


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

Producción:

salida de redirección de Flask 2

Suponga que desea redirigir a cualquier URL en lugar del área de miembros; digamos que desea redirigir a algo que está fuera de su sitio por cualquier motivo. En nuestro caso, queremos que sean redirigidos automáticamente a google.com.

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect("https://www.google.com")


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


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

Producción:

salida de redirección de Flask 3

Dependiendo del resultado de ese proceso, los redirigirás a alguna parte. Por ejemplo, obtiene los datos de la publicación para su información de inicio de sesión si descubre que el nombre de usuario y la contraseña son válidos.

Si la contraseña es correcta, los redirigirá al área de miembros o a cualquier lugar que desee mostrar al usuario. O puede redirigirlos a una página de recuperación de contraseña si la contraseña es incorrecta; eso depende completamente de usted, pero tenga en cuenta que la redirección generalmente se realiza después de algún procesamiento en la vista.

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

Artículo relacionado - Python Flask Redirect