Das Verhalten des Flask-Sitzungswörterbuchschlüssels ändert sich bei Verwendung eines anderen SchlüsselsPython

Python-Programme
Anonymous
 Das Verhalten des Flask-Sitzungswörterbuchschlüssels ändert sich bei Verwendung eines anderen Schlüssels

Post by Anonymous »

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post