Сессии

Среда управления сессиями позволяет вам хранить и получать определённые данные на основе посетителей сайта. Она сохраняет данные на сервере и берёт управление получением и отправлением cookie на себя. Cookie используются только для передачи идентификатора сессии, а не самих данных, это предохраняет вас от большинства проблем с cookie.

Давайте рассмотрим, как активируются сессии и как они используются в функциях представлений.
Для активации сессий выполните следующие шаги:

  1. Измените параметр MIDDLEWARE_CLASSES, добавив в него значение django.contrib.sessions.middleware.SessionMiddleware.

  2. Внесите в параметрINSTALLED_APPSзначение django.contrib.sessions.

  3. Запустите python manage.py migrate после этого.

Стандартный шаблон приложения, созданный с помощью startproject уже имеет все необходимые настройки и если вы ничего не удаляли, то ничего добавлять не понадобится для работы сессий.

После активации SessionMiddleware каждый объектHttpRequest — первый аргумент любой функции представления Django — будет иметь атрибут session по функциональности аналогичный словарю.
Например:

Есть ряд простых правил для эффективного использования сессий в Django:

  • Используйте для объектаrequest.sessionобычные строки Python в качестве ключей словаря. Это правило служит больше для удобства, чем для ускорения работы, но оно стоит того, чтобы ему следовать.

  • Словарные ключи сессии, которые начинаются с символа«подчёркивание», зарезервированы для внутреннего использования Django. На практике среда использует небольшой набор зарезервированных переменных в сессии, но пока вы не знаете об их назначении, не стоит их трогать.

  • Не заменяйтеrequest.sessionновым объектом и не работайте с его атрибутами. Используйте его как обычный словарь Python.

Это простейшее представление аутентифицирует пользователя на сайте:

Это представление отключает ранее авторизованного пользователя:

Кроме уже рассмотренных параметров есть ещё несколько, которые влияют на то как Django работает с сессиями, используя cookie. Они показаны в таблице ниже:

results matching ""

    No results matching ""