我正在编写一个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时它就会重置。
任何人都可以帮我解决这个问题吗?非常感谢你
答案 0 :(得分:0)
这种情况正在发生,因为你的random_number_list
数组是一个全局变量 - 它会在你的dyno重启之前保持不变(在内存中)。
由于您多次访问该网站,因此数据会不断增长。
你的目标是什么?要让用户登录 - 存储一些特定于用户的内容 - 然后注销?如果是这种情况,你真的需要使用会话。烧瓶会话框架(http://flask.pocoo.org/docs/quickstart/#sessions)允许您将数据存储在客户端的计算机上 - 这样,每次用户返回您的站点时,您都可以检索以前存储在该用户计算机上的任何数据。
但要小心 - 以这种方式做事会有很多安全隐患。