我正在用烧瓶写一个小型网络应用程序。当两个用户(在同一网络下)尝试使用应用程序时,会话变量出现问题。
这是代码:
import os
from flask import Flask, request, render_template, g, session
from random import randint
def random():
session['number'] = randint(0,4)
return None
@app.route('/')
def home():
if not session.get('logged_in'):
return render_template('login.html')
else:
return check()
@app.route('/login', methods = ['GET', 'POST'])
def login():
global username
username = request.form['username']
session['logged_in'] = True
session['username'] = username
return check()
@app.route('/check', methods=['GET', 'POST'])
def check():
random()
return render_template('file.html', number = session['number'], user = session['username'])
if __name__ == "__main__":
app.secret_key = ".."
app.run(host = '0.0.0.0',port = 3134, debug=False)
在 file.html 中有一个按钮类型“提交”调用“/check”路由。问题是当两个用户同时使用应用程序时,因为变量“数字”等于最后一个按下按钮的用户的变量“数字”……两个会话之间没有独立性。
我希望这两个用户有两个独立会话,就像他们在本地主机上使用我的应用程序一样。
原文由 Teor9300 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
randint(0,4)
生成数字意味着它们有时 对于 不同的用户是相等的。每次使用 uuid 生成唯一编号:或发电机: