Как удалить ключ сеанса вне представления?

Я получаю сессию вне представления по ее session_key, затем я пытаюсь удалить ключ из нее, как показано ниже, но это не работает:

from importlib import import_module
from django.conf import settings
SessionStore = import_module(settings.SESSION_ENGINE).SessionStore

my_session = SessionStore(session_key=my_session_key)
del my_session["foo"]

# also tried this but not working either:
my_session.delete("foo")

Хранилище сессий не сохраняет новое состояние с нетерпением. Представление часто добавляет/изменяет/удаляет не один ключ, а несколько. Поэтому обычно вы сохраняете сессию в конце представления.

Вы можете принудительно обновить хранилище сессий на бэкенде с помощью .save() [Django-doc], это приведет к обновлению базы данных, или перезаписи файла, или обновлению другого бэкенда, который вы используете для хранения сессий, так:

my_session = SessionStore(session_key=my_session_key)

my_session.pop('foo', None)
my_session.save()
Вернуться на верх