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:
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:
Salida de la consola:
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