Я заметил странное поведение при взаимодействии с переменными сеанса в Django.
В одном из моих приложений я создал файл middleware.py, содержащий функцию, которая копирует переменную сеанса, которая сохраняет объект в локальную, а затем я изменяю атрибут объекта из локальной переменной. Бывает, что изменения, которые я делаю в локальной переменной, применяются и к переменной сеанса. Кажется, что локальная переменная является только ссылкой на сессию. Это поведение правильно?
Вот код:
class CloudMiddleware(object):
user = request.session['user']
user.email = 'myemail'
Когда я делаю
user = request.session['user']
email = user.email
Значение электронной почты равно myemail.
Я всегда думал, что должен сохранить свой объект обратно в сеансе, если я хочу сохранить его. Может ли кто-нибудь объяснить мне, как это действительно работает?