Flask 会话变量

Teo*_*300 6 python variables session login flask

我正在用 Flask 编写一个小型网络应用程序。当两个用户(在同一网络下)尝试使用应用程序时,会话变量出现问题。

这是代码:

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)
Run Code Online (Sandbox Code Playgroud)

在 file.html 中有一个按钮类型“提交”,它调用 '/check' 路由。问题是当两个用户同时使用应用程序时,因为变量“编号”等于按下按钮的最后一个用户的变量“编号”......两个会话之间没有独立性。

我希望这两个用户有两个独立会话,就像他们在本地主机上使用我的应用程序一样。

小智 4

使用randint(0,4)生成数字意味着它们有时对于不同的用户来说相同的。每次使用 uuid 时生成唯一编号:

from uuid import uuid4
def random():
    session['number'] = str(uuid4())
    return None
Run Code Online (Sandbox Code Playgroud)

或发电机:

import itertools
consequent_integers = itertools.count()

def random():
    session['number'] = consequent_integers.next()
    return None
Run Code Online (Sandbox Code Playgroud)