烧瓶会话变量 [英] Flask session variables

查看:84
本文介绍了烧瓶会话变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm writing a small web app with flask. I have a problem with session variables when two users (under the same network) try to use app.

这是代码:

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中,有一个按钮类型提交",称为"/检查"路线. 问题是两个用户同时使用应用程序时,因为变量"number"等于按下按钮的最后一个用户的变量"number"……两个会话之间没有独立性.

In file.html there is a button type "submit" that call '/check' route. The problem is when two users use app at same time because the variable 'number' is equal to variable 'number' of the last user that push the button... there isn't indipendence between two sessions.

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

I would that the two users has two indipendence sessions, like if they use my app in local host.

推荐答案

使用randint(0,4)生成数字意味着它们将会对于不同的用户而言有时是相同的.要每次使用uuid生成唯一编号:

Using randint(0,4) to generate number means that they will sometimes be equal for different users. To generate unique number every time use uuid:

from uuid import uuid4
def random():
    session['number'] = str(uuid4())
    return None

或生成器:

import itertools
consequent_integers = itertools.count()

def random():
    session['number'] = consequent_integers.next()
    return None

这篇关于烧瓶会话变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆