【问题标题】:Flask - Reset everything when user leavesFlask - 用户离开时重置所有内容
【发布时间】:2014-05-17 12:38:40
【问题描述】:

我正在编写一个用于学习目的的 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,它就会重置。

谁能帮助我解决这个问题?非常感谢

【问题讨论】:

  • 你的randList()是如何实现的?
  • 它:返回 [random.randint(0,9) for r in xrange(10)]

标签: python session heroku flask


【解决方案1】:

发生这种情况是因为您的 random_number_list 数组是一个全局变量——它将保持不变(在内存中),直到您的测功机重新启动。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2021-11-13
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多