Flask Post-Anfrage
![Flask Post-Anfrage](/img/Python-Flask/feature-image---flask-post-request.webp)
Wir werden mit dieser Erklärung zwei grundlegende HTTP-Methoden (get
und post
) kennenlernen, und wir werden auch die Unterschiede zwischen ihnen kennenlernen und dann ein grundlegendes Beispiel durchgehen, wie wir Daten von einem einfachen Formular in Flask senden können .
Verwendung der Post
Anfrage in Flask
Wir erklären die HTTP-Methoden, get
- und post
-Requests. Beides haben Sie wahrscheinlich schon einmal gehört; get
ist die gebräuchlichste Art, Informationen zu einer Website oder einem Client zu erhalten oder zu senden, je nachdem, wie diese Informationen gesendet werden.
Post
ist eine Möglichkeit, dies sicher zu tun; get
ist im Wesentlichen eine unsichere Art, Informationen zu erhalten; es wird am häufigsten verwendet. Wenn wir unsere App ausführen und durchsuchen, können wir sehen, dass sie mit der Startseite verbunden ist. wenn wir zur Konsole gehen, wo eine Anweisung auftaucht und get
sagt.
Was bedeutet das? Grundsätzlich ist es nicht sicher, wenn wir hier etwas eingeben, was bedeutet, dass Sie wissen, dass jeder es sehen kann.
Es handelt sich nicht um sichere Informationen, die an den Server gesendet werden und uns die eigentliche Webseite mit einer get
-Methode zurücksenden.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hi there, this is testing"
if __name__ == "__main__":
app.run(debug=True)
Ausgabe:
Wenn wir die post
-Anforderung verwenden, können wir verschlüsselte verschlüsselte Informationen senden, die wir von keinem Endpunkt aus sehen. Es wird nicht auf dem eigentlichen Webserver gespeichert, das ist also der Unterschied zwischen get
und post
.
Wir haben es wahrscheinlich nicht auf die beste Art und Weise erklärt, aber durch diesen Artikel werden wir die Hauptunterschiede zwischen ihnen verstehen und die grundlegende Denkweise über die get
-Methode verstehen, die verwendet wird, um ungesicherte Anfragen zu senden und post
-Anfragen zu sichern Zum Senden von Daten wird es normalerweise zum Senden von Formulardaten verwendet.
Lassen Sie uns ein einfaches Beispiel durchgehen: Wir möchten einige verschiedene Seiten in dieser App einrichten. Wir schreiben ein Skript mit einem Dialogfeld, in das jemand es eingeben und über eine Schaltfläche senden kann, und wir tun dies, während wir die Anfrage post
verwenden.
Wir werden eine Seite mit einer Methode namens LOGIN()
einrichten, ihr oben einen Dekorator geben und "/login"
einfügen. Wir müssen noch einen weiteren Aspekt hinzufügen, den wir noch nicht gesehen haben: die Methoden
.
Wir können es auf dieser Anmeldeseite verwenden. Wenn Sie also eine Verbindung herstellen oder zu einer der beiden Seiten gehen, gehen Sie standardmäßig mit einer get
-Anforderung, was bedeutet, dass wir diese Informationen abrufen müssen, aber es geht nicht Um sicher zu sein, haben wir eine andere Methode, die post
-Methode.
Innerhalb des Dekorators müssen wir ein Argument namens methods
verwenden, das eine Liste akzeptiert, und dann fügen wir ein post
und get
in die Liste ein.
@app.route("/login", methods=["POST", "GET"])
Das Problem ist, wie können wir in dieser login
-Funktion feststellen, ob wir den get
-Request aufgerufen haben oder ob wir den post
-Request aufgerufen haben? Wir müssen den request
importieren und mit einer if
-Anweisung verwenden, um zu prüfen, ob wir diese Seite mit einem get
-Request oder einem post
-Request erreichen.
Wenn wir einen post
haben, leiten wir den Benutzer um und senden die Daten an die Benutzerseite, wo wir die Daten anzeigen können. Wir verwenden die Daten
auch als Schlüssel des Formularwörterbuchs und greifen über unsere Datei login.html
darauf zu, wo wir ein Attribut namens name
haben.
Wenn wir die Anfrage get
haben, rendern wir die Anmeldeseite mit der Methode 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")
Jetzt müssen wir eine weitere Seite erstellen, und der Name der Funktion wäre USER()
, die eine Variable namens usr
annehmen wird. Anstatt die Vorlage zurückzugeben, werden wir einfaches HTML zurückgeben.
@app.route("/<usr>")
def USER(usr):
return f"<h1>{usr}</h1>"
Jetzt müssen wir diese Anmeldeseite erstellen, die ein einfaches HTML-Formular wäre, also erstellen wir im Vorlagenordner eine login.html
-Datei; In dieser Datei verwenden wir die Bootstrap-Startervorlage. Innerhalb des Body-Tags beginnen wir mit der Erstellung des Formulars.
Wir haben das Attribut method
verwendet, und in diesem Fall wird unsere Methode post
sein, weil wir Informationen veröffentlichen, keine Informationen erhalten, und normalerweise, wenn Sie hier get
eingeben, sind Sie gemeint werden dieses Formular mit Informationen ausfüllen, die Sie vom Server erhalten.
<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>
Hier ist der vollständige Quellcode der oben erläuterten app.py
-Datei.
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)
Ausgabe:
Konsolenausgabe:
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