首页 > 解决方案 > 烧瓶会话丢失数据

问题描述

我正在测试一个简单的应用程序来在会话中存储数据。我创建了检查以避免重置,但仍然丢失数据。这是我的 app.py 代码:

from flask import Flask,render_template,request,session
from flask_session import Session

app = Flask(__name__)

app.config["SESSION_PERMANENT"] = True
app.config["SESSION_TYPE"] = "filesystem"
Session(app)

@app.route("/",methods=["POST","GET"])
def index():
    if session.get("notes") is None:
        session["notes"] = []
    if request.method == "POST":
        note = request.form.get("note")
        session["notes"].append(note)
    return render_template("notes.html",notes=session["notes"])

==================================================== ===============

每当我从表单发布新信息时,它都会覆盖旧信息。似乎会话已重置。

知道为什么会这样吗?

谢谢,瓦尔丹

标签: flask

解决方案


请考虑以下几点:

  1. 这是最重要的一点,要使烧瓶会话正常工作,您需要配置 a SECRET_KEY,如下所示:
app.config["SECRET_KEY"] = 'YourSecretKey@123'
  1. 我不知道,我只是发现您不需要以下行并且它是相应的导入(当我注释掉这部分时它开始为我工作,可能是 Flask-Session 和 Flask 的内置会话搞砸了彼此):
Session(app)
from flask_session import Session
  1. 不要直接更新会话,如果它是一个数组,请执行以下操作:
note = request.form.get("note")
temp = session['notes']
temp.append(note)
session['notes'] = temp

我希望,它会为你工作。


推荐阅读