Django:如何在视图外删除Session指定键?已尝试方法无效
解决Django视图外删除Session键不生效的问题
问题核心是修改Session后未调用save()方法持久化变更——Django的SessionStore对象不会自动把内存里的修改同步到存储后端(比如数据库、缓存)。
修正后的代码:
from importlib import import_module from django.conf import settings SessionStore = import_module(settings.SESSION_ENGINE).SessionStore # 初始化Session对象 my_session = SessionStore(session_key=my_session_key) # 显式加载session数据(避免未自动加载的情况) my_session.load() # 删除指定键 del my_session["foo"] # 关键步骤:将修改保存到后端存储 my_session.save()
额外说明:
my_session.delete("foo")是错误用法,Django的SessionStore没有这个实例方法,除了del,也可以用my_session.pop("foo", None)(第二个参数用于避免键不存在时抛出异常)。- 视图内Django会自动处理Session的保存,但视图外操作Session时,所有增、删、改操作都必须手动调用
save()才能生效。
内容的提问来源于stack exchange,提问作者Khaled Abdulazim
相关产品推荐
相关产品推荐

