Приложение на flask
Всем, привет. Я новичок в программировании. Написал приложение на flask (онлайн калькулятор). Столкнулся с проблемой, даже не знаю как правильно она называется. Приложение работает только для одного пользователя. Другой пользователь, если зайдёт одновременно, видит результаты запросов первого. Что это вообще такое и как можно это устранить, т. е. чтобы разные пользователи одновременно могли корректно пользоваться сервисом.
from collections import namedtuple
from flask import Flask, render_template, redirect, url_for, request
import xlrd
app = Flask(__name__)
rb_comfort = xlrd.open_workbook("/home/serjio/flask_app/Price_Comfort.xlsx")
sheet_comfort = rb_comfort.sheet_by_index(0)
vals_comfort = [sheet_comfort.row_values(rownum) for rownum in range(sheet_comfort.nrows)]
rb_prest = xlrd.open_workbook("/home/serjio/flask_app/Price_Prestige.xlsx")
sheet_prest = rb_prest.sheet_by_index(0)
vals_prest = [sheet_prest.row_values(rownum) for rownum in range(sheet_prest.nrows)]
Message = namedtuple('Message', 'modul cat cost value')
messages = []
a = []
divans_comfort = []
for names in range(6,283):
x = vals_comfort[names][1]
if x not in divans_comfort:
divans_comfort.append(x)
divans_prest = []
for names1 in range(6,500):
x1 = vals_prest[names1][1]
if x1 not in divans_prest:
divans_prest.append(x1)
@app.route('/', methods=['GET'])
def hello_world():
return render_template('index.html')
@app.route('/overmain', methods=['GET'])
def overmain():
coll = request.args.get('coll')
if coll == 'index.html':
return render_template('first.html')
else:
return render_template('first1.html')
@app.route('/main', methods=['GET', 'POST'])
def main():
global name, possibile_moduls
possibile_moduls = []
sofa_name = request.args.get('sofa_name')
a.append(sofa_name)
if sofa_name != None:
name = sofa_name
if name in divans_comfort:
for i in range(len(vals_comfort)):
for j in range(50):
if vals_comfort[i][1] == name:
possibile_moduls.append(vals_comfort[i][2])
break
elif name in divans_prest:
for i in range(len(vals_prest)):
for j in range(50):
if vals_prest[i][1] == name:
possibile_moduls.append(vals_prest[i][2])
break
return render_template('main.html', messages=messages, name=name, possibile_moduls=possibile_moduls)
@app.route('/add_message', methods=['POST'])
def add_message():
modul = request.form['modul']
cat = request.form['cat']
divan = a[0]
cost = 0
value = 0
modul = modul.split()
modul_dict = {}
for ds in range(len(modul)):
if modul[ds] not in modul_dict:
modul_dict[modul[ds]] = 1
else:
modul_dict[modul[ds]] += 1
if divan in divans_comfort:
for i in range(len(vals_comfort)):
for j in range(21):
if vals_comfort[i][1] == divan:
for obj in modul_dict:
if obj == vals_comfort[i][2]:
cost += int(vals_comfort[i][2 + int(cat)]) * modul_dict[obj]
value += vals_comfort[i][3] * modul_dict[obj]
break
elif divan in divans_prest:
for i in range(len(vals_prest)):
for j in range(21):
if vals_prest[i][1] == divan:
for obj in modul_dict:
if obj == vals_prest[i][2]:
cost += int(vals_prest[i][3 + int(cat)]) * modul_dict[obj]
value += vals_prest[i][3] * modul_dict[obj]
break
cost = str(cost)
messages.append(Message(modul, cat, cost, value))
return redirect(url_for('main'))
@app.route('/del_message', methods=['POST'])
def del_message():
messages.clear()
return redirect(url_for('main'))
@app.route('/return', methods=['POST'])
def return_():
messages.clear()
a.clear()
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)