request.user
由django.contrib.auth.middleware.AuthenticationMiddleware
設置。
檢查django/contrib/auth/middleware.py
:
class LazyUser(object):
def __get__(self, request, obj_type=None):
if not hasattr(request, '_cached_user'):
from django.contrib.auth import get_user
request._cached_user = get_user(request)
return request._cached_user
class AuthenticationMiddleware(object):
def process_request(self, request):
request.__class__.user = LazyUser()
return None
然後看get_user
功能django/contrib/auth/__init__.py
:
def get_user(request):
from django.contrib.auth.models import AnonymousUser
try:
user_id = request.session[SESSION_KEY]
backend_path = request.session[BACKEND_SESSION_KEY]
backend = load_backend(backend_path)
user = backend.get_user(user_id) or AnonymousUser()
except KeyError:
user = AnonymousUser()
return user
後端將需要實現get_user
功能。
請參閱編輯。 – 2011-03-21 13:03:54