Flask - 用户离开时重置一切
我正在写一个Flask应用程序来学习,但我没有使用Flask的会话功能,因为它似乎不太好用。假设我一开始有一个空列表。当用户连接到链接webapp.herokuapp.com时,下面的代码会被执行:
app = Flask(__name__)
app.debug = True
app.secret_key = 'nosecret'
random_number_list = []
@app.route('/', methods=['POST'])
def login():
# Read from the from input
usrn = request.form['username']
pswd = request.form['password']
random_number_list = randList() # The list will have 10-20 random integer elements
当我在网站上打印出random_number_list时,代码运行得很好。但是,当我再次访问我的应用程序webapp.herokuapp.com时,random_number_list并没有被重置。相反,新元素被添加到最后的列表中,过程一直在继续。
E.g: at first connection to the webapp:
1 4 5 6 7
Second connection:
1 4 5 6 7 2 3 4 2 1
在def login()中,我尝试在生成新结果之前将random_number_list设置为[],但列表也没有被重置。只有当我将新代码推送到Heroku时,它才会被重置。
有没有人能给我一些建议来解决这个问题?非常感谢!
1 个回答
0
这个问题发生的原因是你的 random_number_list
数组是一个全局变量——它会一直保持不变(在内存中),直到你的服务器重启。
因为你多次访问这个网站,所以数据会不断增加。
你在这里的目标是什么?是让用户登录——存储一些用户特定的信息——然后再登出?如果是这样的话,你真的需要使用会话(sessions)。Flask 的会话框架(http://flask.pocoo.org/docs/quickstart/#sessions)可以让你在用户的电脑上存储数据——这样,每次用户返回你的网站时,你都可以取回之前存储在他们电脑上的数据。
不过要小心——这样做有很多安全隐患。