Petición Post de Flask

Salman Mehmood 15 febrero 2024
Petición Post de Flask

Aprenderemos con esta explicación acerca de dos métodos HTTP básicos (get y post), y también aprenderemos las diferencias entre ellos y luego veremos un ejemplo básico de cómo podemos enviar datos desde un formulario básico en el Flask .

Utilice la solicitud Post en Flask

Explicaremos los métodos HTTP, las solicitudes get y post. Probablemente hayas escuchado ambos antes; get es la forma más común de obtener o enviar información a un sitio web o a un cliente, dependiendo de cómo se envíe esta información.

Post es una forma de hacer esto de forma segura; get esencialmente es una forma insegura de obtener información; es el más utilizado. Cuando ejecutamos nuestra aplicación y la navegamos, podemos ver que está conectada donde tenemos la página de inicio; si vamos a la consola donde aparece una declaración y dice get.

¿Qué significa esto? Esencialmente, cada vez que escribimos algo aquí no es seguro, lo que significa que cualquiera puede verlo.

No es información segura que se enviará al servidor y nos devolverá la página web real mediante un método get.

from flask import Flask

app = Flask(__name__)


@app.route("/")
def index():
    return "Hi there, this is testing"


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

Producción:

obtener método

Si usamos la solicitud post, podemos enviar información segura que está encriptada y no la veremos desde ningún punto final. No se almacena en el servidor web real, por lo que esta es la diferencia entre get y post.

Probablemente no lo explicamos de la mejor manera, pero a través de este artículo, entenderemos las principales diferencias entre ellos y la forma básica de pensar sobre el método get que se usa para enviar solicitudes no seguras y las solicitudes post son seguras. para enviar datos, generalmente se usa para enviar datos de formulario.

Veamos un ejemplo básico: queremos configurar algunas páginas diferentes en esta aplicación. Escribiremos un script con un cuadro de diálogo en el que alguien puede escribirlo y enviarlo usando un botón, y lo hacemos mientras usamos la solicitud de post.

Configuraremos una página usando un método llamado LOGIN(), le daremos un decorador en la parte superior y pondremos "/login". Necesitamos agregar otro aspecto que aún no hemos visto: los methods.

Podemos usarlo en esta página de inicio de sesión, así que por defecto, cada vez que te conectas, o vas a una de las páginas de pareja, entonces vas con una petición get lo que significa que necesitamos obtener esa información, pero no va a ser seguro por eso tenemos un método diferente que es el método post.

Dentro del decorador, tenemos que utilizar un argumento llamado methods, que toma una lista, y luego ponemos un post y get dentro de la lista.

@app.route("/login", methods=["POST", "GET"])

El problema es ¿cómo podemos determinar en esta función login si llamamos a la solicitud get o si llamamos a la solicitud post? Necesitamos comenzar a importar la request y usarla con una declaración if para verificar si llegamos a esta página con una solicitud get o una solicitud post.

Si tenemos una post, redirigimos al usuario y enviamos los datos a la página del usuario, donde podemos mostrar los datos. También usamos los Data como clave del diccionario de formularios y accedemos a él desde nuestro archivo login.html, donde tenemos un atributo llamado name.

Si tenemos la solicitud get, renderizamos la página de inicio de sesión utilizando el método render_template().

def LOGIN():
    if request.method == "POST":
        UER_DATA = request.form["DATA"]
        return redirect(url_for("USER", usr=UER_DATA))
    else:
        return render_template("login.html")

Ahora necesitamos crear una página más, y el nombre de la función sería USER(), que tomará una variable que es usr. En lugar de devolver la plantilla, vamos a devolver HTML básico.

@app.route("/<usr>")
def USER(usr):
    return f"<h1>{usr}</h1>"

Ahora necesitamos construir esta página de inicio de sesión que sería un formulario HTML simple, por lo que, dentro de la carpeta de plantillas, creamos un archivo login.html; dentro de este archivo, usaremos la plantilla de inicio de Bootstrap. Dentro de la etiqueta del cuerpo, comenzamos a crear el formulario.

Usamos el atributo method, y en este caso, nuestro método será post porque publicaremos información, no obtendremos información y, por lo general, si pones get aquí, eso significa que va a llenar este formulario con la información que obtiene del servidor.

 <h1>Hello, this is login page!</h1>
    <form action="#" method="post">
        <p>Name:</p>
        <p><input type="text" name="DATA" /></p>
        <p><input type="submit" value="submit"/></p>
    </form>

Aquí está el código fuente completo del archivo app.py que explicamos anteriormente.

from flask import Flask, render_template, redirect, url_for, request

app = Flask(__name__)


@app.route("/")
def INDEX():
    return render_template("index.html")


@app.route("/login", methods=["POST", "GET"])
def LOGIN():
    if request.method == "POST":
        UER_DATA = request.form["DATA"]
        return redirect(url_for("USER", usr=UER_DATA))
    else:
        return render_template("login.html")


@app.route("/<usr>")
def USER(usr):
    return f"<h1>{usr}</h1>"


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

Producción:

Petición de poste de Flask

Salida de la consola:

Solicitud de Flask Post - Salida de consola

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