While working on a private web application earlier this week, I ran into Django's session support for the first time. Like many other aspects of web app development, Django can make dealing with sessions very easy, although sessions are a complex topic - adding state on top of the stateless HTTP protocol isn't trivial.
As happens sometimes, my curiosity was triggered and I decided to understand how Django achieves this "magic" - seamlessly implementing sessions while facing the user with a very simple-to-use API, hiding the complexity underneath. And reusing my well-chewed maxim - the best way to learn is to teach. Hence, this series of articles.