don*_*yor 2 python django session
我想检查会话中是否有任何内容.我做的是:
if request.session:
# do something
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有什么方法可以知道会话当时是否包含某些内容?
如果我这样做request.session['some_name'],它可以工作,但在某些情况下,我只需要知道会话是否为空.询问一些特定的名字并不总是想要的东西.例如.如果没有会话,则返回错误,因为some_name不存在.
感谢帮助.
request.session是一个SessionBase对象的实例,其行为类似于字典,但它不是字典.这个对象有一个"私有"字段(实际上它是一个属性)_session,它是一个包含所有数据的字典.
原因是Django在你打电话之前不加载会话request.session[key].它被懒惰地实例化了.
所以你可以尝试这样做:
if request.session._session:
# do something
Run Code Online (Sandbox Code Playgroud)
或者你可以通过查看这样的键来做到这一点:
if request.session.keys():
# do something
Run Code Online (Sandbox Code Playgroud)
注意如何.keys()工作:
Django的/的contrib /会话/后端/ base.py
class SessionBase(object):
# some code
def keys(self):
return self._session.keys()
# some code
Run Code Online (Sandbox Code Playgroud)
我总是建议直接阅读源代码.