Ich versuche zu verstehen, wie Formulardaten in Flask-Sitzungen gespeichert werden. Beim Anhängen von Daten an ein Sitzungswörterbuch, das bereits in einer vorherigen Anfrage definiert wurde, bin ich auf ein Verhalten gestoßen, das mir seltsam vorkommt.
Ich definiere die folgende Ansicht:
@bp.route("/new-form", methods=("GET", "POST"))
def new_form():
if request.method == "POST":
if not "x" in session:
session["x"] = []
session["x"].append(json.dumps(request.form))
return session.get("x")
return render_template("main/new-form.html")
Ich würde erwarten, dass session["x"] seine Daten behält und bei jeder Anfrage die neuen JSON-Daten aus dem Formular anhängt. Es wird jedoch immer nur das zuletzt an session["x"] angehängte Formular angezeigt.
Was ich wirklich nicht verstehe, ist das, wenn ich der Sitzung einen weiteren Schlüssel hinzufüge Bevor die Formulardaten an die Sitzung angehängt werden, verhalten sich die Formulardaten so, wie ich es erwarten würde, d. h. session["x"] wird zu einer langen Liste aller gesendeten Formulare, bis ich die Daten aus der Sitzung lösche:
if request.method == "POST":
session["idontgetit"] = 1
...
Allein das Hinzufügen der Zeile session["idontgetit"] = 1 sorgt dafür, dass sich session["x"] wie erwartet verhält.
Ich verwende die Zurück-Schaltfläche meines Browsers, um dies zu testen. Ich weiß nicht, ob das unerwartete Auswirkungen haben würde. Es verhält sich konsistent in beide Richtungen.
Das Verhalten des Flask-Sitzungswörterbuchschlüssels ändert sich bei Verwendung eines anderen Schlüssels ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post