Django CRUM (Current Request User Middleware) captures the current request and user in thread local storage. https://projects.ninemoreminutes.com/projects/django-crum