如何获取login()在会话中保存的用户对象?从会话中获取用户对象
user= request.session.get('user')
返回nothingIn这个例子:
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
如何获取login()在会话中保存的用户对象?从会话中获取用户对象
user= request.session.get('user')
返回nothingIn这个例子:
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
AuthenticationMiddleware将用户属性,表示当前登录的用户,向每个传入HttpRequest对象。身份验证中间件需要安装会话中间件。所以,你应该settings.py中添加此中间件到MIDDLEWARE_CLASSES元组:
MIDDLEWARE_CLASSES = (
#...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
#...
)
顺便说一句,如果你想从那里这个中间件获取用户就知道了,看看AUTH中间件来源:
# contrib.auth.middleware.py:
def get_user(request):
if not hasattr(request, '_cached_user'):
request._cached_user = auth.get_user(request)
return request._cached_user
class AuthenticationMiddleware(object):
def process_request(self, request):
assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
request.user = SimpleLazyObject(lambda: get_user(request))
# django.contrib.auth.__init__.py (auth.get_user)
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
和默认backend.get_user:
# contrib.auth.backends.py
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
谢谢。 request.user现在的作品:) – hln
请确保您有 'django.contrib.auth
' 在你安装的应用程序 'django.contrib.contenttypes
'。在需要之后运行syncdb。现在你将拥有你需要的所有用户表。
接下来你想确保你有request.user每个请求。我认为这就是为什么你没有得到任何request.user。 SessionMiddleware
和AuthenticationMiddleware
中间件需要位于MIDDLEWARE_CLASSES
的设置中。
欲了解更多信息阅读文档here
请求= request.user可能? – ndpu
请阅读有关django.contrib.auth.models.User对象 –
您的第一个示例不是您如何获得用户。看看https://docs.djangoproject.com/en/1.2/topics/auth/#authentication-in-web-requests你做了Django提供的示例应用吗? –