Примечание. Не дублируется из Получить текущий идентификатор пользователя в Flask .
Я использую flask_login и flask, поэтому для получения текущего идентификатора используется только flask_login.current_user.id. Но проблема возникает, когда я хочу создать переменную с помощью команды, например, в моем app.py:
...
curr_user = flask_login.current_user.id
def function_a(curr_user):
os.mkdir(path + '/' + curr_user)
return 'Path created successfully'
...
Это говорит:
AttributeError: объект 'NoneType' не имеет атрибута 'get_id'
Только во время работы (не нужно вызывать, единственное присвоение значения curr_user делает проблему)
Пробовал вызывать функцию с переменной как flask_login.current_user.id и Ive одинаково.
Думаю, проблема в том, что я не могу получить идентификатор пользователя в целом (в запущенном экземпляре app.py), и это требует контекста. Итак, я попробовал:
with app.test_request_context():
перед назначением, и я получил только None для пользователей и гостей.
Edit. Я знаю, я могу просто сделать:
def function_a():
os.mkdir(path+'/'+flask_login.current_user.id)
return 'Path created successfully'
Но это был только пример, действительно нужно присваивать значение нелокальной переменной с контекстом.