使用Django会话时,在某些情况下,无法使用django.contrib.sessions.models.Session
的{{1}}方法解码存储在数据库中的编码会话数据,即它将始终返回空字典。
有没有办法解码这些数据?
它依赖于get_decoded
的{{1}}方法,如果计算的哈希值与预期的哈希值不同(它会引发django.contrib.sessions.backends.base.SessionBase
异常),它将返回一个空字典。
答案 0 :(得分:3)
django.contrib.sessions.models.Session
' get_decoded
方法依赖于django.contrib.sessions.backends.base.SessionBase.decode
,如果计算出的哈希值与预期哈希值不同,则会返回空字典(它会引发{{1}异常),有SuspiciousOperation
或unpickling异常。它会真正捕获所有异常,但这些是代码失败的原因。
因此,除了哈希检查部分之外,将所有这些代码调用包装在一起,您就可以获得所需的内容。下面是一个函数,它将为您提供某个会话对象的已解码会话数据,前提是它存在。
ValueError
的源代码