Flask - 当用户离开时重置所有内容

时间:2014-04-05 01:51:15

标签: python session heroku 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 :(得分:0)

这种情况正在发生,因为你的random_number_list数组是一个全局变量 - 它会在你的dyno重启之前保持不变(在内存中)。

由于您多次访问该网站,因此数据会不断增长。

你的目标是什么?要让用户登录 - 存储一些特定于用户的内容 - 然后注销?如果是这种情况,你真的需要使用会话。烧瓶会话框架(http://flask.pocoo.org/docs/quickstart/#sessions)允许您将数据存储在客户端的计算机上 - 这样,每次用户返回您的站点时,您都​​可以检索以前存储在该用户计算机上的任何数据。

但要小心 - 以这种方式做事会有很多安全隐患。