Flask Post-Anfrage

Salman Mehmood 15 Februar 2024
Flask Post-Anfrage

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:

Methode bekommen

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:

Fläschchen-Post-Anfrage

Konsolenausgabe:

Flask Post Request - Konsolenausgabe

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