Использование сессий Django
Джанго предоставляет session framework, поддерживающую анонимные и пользовательские сессии. Session framework позволяет хранить произвольные данные для каждого посетителя. Данные сеанса хранятся на стороне сервера, а файлы cookie содержат session ID, если не используется обработчик сессий на основе файлов cookie. Промежуточное подпрограммное обеспечение управляет отправкой и получением файлов cookie. Обработчик сессий по умолчанию хранит данные сессии в базе данных, но, как вы увидите далее, можно выбрать между различными обработчиками сессий.
Чтобы использовать сессии, необходимо убедиться, что параметр MIDDLEWARE_CLASSES проекта содержит 'django.contrib.sessions.middleware.SessionMiddleware'. Это промежуточное программное обеспечение управляет сессиями и добавляется по умолчанию при создании нового проекта с помощью команды startproject.
Промежуточное программное обеспечение позволяет сделать текущую сессию доступной в объекте request. Доступ к текущей сессии можно получить с помощью request.session , используя его аналогично словарю Python для хранения и извлечения данных сессии. Словарь сессий по умолчанию принимает любой объект Python, который может быть сериализован в JSON. Можно задать переменную в сессии следующим образом:
request.session['foo'] = 'bar'
Извлечение session key:
request.session.get('foo')
Удалить key, хранящийся в session:
del request.session['foo']
Как вы видели, мы только что обрабатывали request.session, как стандартный словарь Python.
При входе пользователей в сайт их анонимная сессия теряется и создается новая сессия для пользователей, прошедших авторизацию. При хранении элементов в анонимной сессии, которую необходимо сохранить после входа пользователей в систему, необходимо будет скопировать старые данные сессии в новую сессию.