前提・実現したいこと
Python,FlaskでTo doリストを作っている際に、Sessionについて分からなくなったので質問します。
ソースコードを簡単に説明すると、/todoでクライアントからの入力をPOSTで受け取り/taskに送ります。
/taskでsession["todo"]が参照しているリストに、POSTで受け取った値を追加して、もう一度/todoにリダイレクトします。
現在のソースコートだとtask()でリストを更新しても、todo()にリダイレクトするとリストが空に戻ってしまいます。
task()でコメントアウトしているsession["todo"]=temp_listがあれば、すべて上手く行くのですが、なぜ必要なのか分かりません。
sessionをglobalな辞書くらいにしか思っていなかったのですが、それが違うのだと分かりました。
sessionの動態を教えていただけたら嬉しいです。
発生している問題・エラーメッセージ
task()のコメントアウトしている行(session["todo"]=temp_list)があれば、redirect先であるtodo()でもsession["todo"]の値が使えるが、その行がないと、session["todo"]が更新されず、空のリストのまま。
該当のソースコード
@app.route("/todo") def todo(): if session.get("todo", None) is None: print("sessionのtodoリストを作成します") session["todo"] = [] return render_template("todo.html", output_list=session["todo"]) @app.route("/task", methods=["GET", "POST"]) def task(): if request.method == "POST": temp_list = session["todo"] temp_list.append(request.form["task"]) #session["todo"] = temp_list return redirect(url_for("todo"))
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/10 09:20
2020/09/11 01:05
2020/09/11 07:58