Я пытаюсь найти способ обновить словарь (глобальный) из функции в приложении фляги. Я хочу хранить информацию о пользователях, которые создают учетную запись в словаре, как это.
user {
'key': {'key1':'value1', 'key2':'value2'}
}
Но я не могу обновить дикт или список изнутри функции. Я пробовал оба способа обновления user['key']={'key1':'value1', 'key2':'value2'}
и user.update({'key': {'key1':'value1', 'key2':'value2'}
, но он не работает.
Это полный код этой части.
channel_list = []
users = {}
@app.route("/", methods=["GET", "POST"])
def index():
username = request.form.get("username")
firstname = request.form.get("firstname")
lastname = request.form.get("lastname")
if request.method == "GET":
if session.get("user_name"):
user_name = session.get("user_name")
get_user = users[user_name]
render_template("profile.html", user_name=get_user, users=users)
else:
return render_template("index.html")
if request.method == "POST":
session["user_name"] = username
newuser = {username: {"username": username, "firstname": firstname, "lastname": lastname}}
users.update(newuser)
get_user = users[username]
return render_template("profile.html", user=get_user, users=users)
@app.route("/signin", methods=["GET", "POST"])
def signin():
username = request.form.get("username")
if request.method == "GET":
if session.get("user_name"):
user_name = session.get("user_name")
get_user = users[user_name]
render_template("profile.html", user=get_user, users=users)
else:
return render_template("signin.html")
if request.method == "POST":
session["user_name"] = username
get_user = users[username]
return render_template("profile.html", user=get_user, users=users)
return render_template("signin.html")
Я выяснил проблему, пытаясь сделать это в чистом Python, и там я тоже не могу обновить dictбез первого запуска функции. Но как мне запустить каждую отдельную функцию (ex, index () или signin ()) в фляге, потому что я думаю, что это проблема? Я думаю, что об этом должен позаботиться app.run (), но он не работает.
if __name__ == "__main__":
app.run()
socketio.run(app)
Я продолжаю получать "KeyError" каждый раз, потому что ничего не вставляется в dict, поэтому нет ничего, чтобы выбрать или получить доступ.
Я пытаюсь избежать использования БД, и яочень хочу понять это, я не знаю, что я делаю неправильно. Код работает очень хорошо вне приложения фляги, поэтому он расстраивает.