django session check for existance
django, python, session
Solution
`request.session` is an instance of `SessionBase` object which behaves like dictionary but it it is not a dictionary. This object has a "private" field ( actually it's a property ) called `_session` which is a dictionary which holds all data.
The reason for that is that Django does not load session until you call `request.session[key]`. It is lazily instantiated.
So you can try doing that:
if request.session._session:
# do something
or you can do it by looking at keys like this:
if request.session.keys():
# do something
Note how `.keys()` works:
django/contrib/sessions/backends/base.py
class SessionBase(object):
# some code
def keys(self):
return self._session.keys()
# some code
I always recommend reading the source code directly.
Problem
I am trying to check if the session does have anything in it. What I did is: ``` if request.session: # do something ``` but it is not working. Is there any way of knowing whether the session contains something at that moment? If I do `request.session['some_name']`, it works, but in some cases, I just need to know if the session is empty or not. Asking with some specific names is not always a wanted thing. Eg. if there is no session, it returns an error, since `some_name` doesn't exist.