2007-09-17

Using User info outside request in Django

1. Create "middleware" directory in project directory.
2. Create python file name "__init__.py and "threadlocals.py" in "middleware" directory.
3. in side "threadlocals.py" copy this code
    # threadlocals middleware
try:
from threading import local
except ImportError:
from django.utils._threading_local import local

_thread_locals = local()
def get_current_user():
return getattr(_thread_locals, 'user', None)

class ThreadLocals(object):
"""Middleware that gets various objects from the
request object and saves them in thread local storage."""
def process_request(self, request):
_thread_locals.user = getattr(request, 'user', None)

4. in "settings.py" add
"project_name.middleware.threadlocals.ThreadLocals" to the MIDDLEWARE_CLASSES variable.
5. using like this
from project_name.middleware import threadlocals
user = threadlocals.get_current_user()

For more information >> Go to CookBookThreadlocalsAndUser

1 comment:

GamesBook said...

This is not working for reason - always get "None" for the user... any ideas?