I am storing dictionaries in my session referenced by a string key:
>>> request.session['my_dict'] = {'a': 1, 'b': 2, 'c': 3}
The problem I encountered was that when I modified the dictionary directly, the value would not be changed during the next request:
>>> request.session['my_dict'].pop('c')
3
>>> request.session.has_key('c')
False
# looks okay...
...
# Next request
>>> request.session.has_key('c')
True
# what gives!
As the documentation states, another option is to use
which will make this happen every request anyway. Might be worth it if this happens a lot in your code; I’m guessing the occasional additional overhead wouldn’t be much and it is far less than the potential problems from neglecting from including the
line each time.