如何在Django的登录处理中获取用户会话?
问题描述:
我正在学习Django。那么,或多或少;) 我正在写一个登录表单。因为我想知道东西是如何工作的,因为我需要这样做。如何在Django的登录处理中获取用户会话?
我无法把事情做好。用户在身份验证后,在我的“成功”视图中看不到,因为它重定向回登录。
我确实设置了我的MIDDLEWARE_CLASSES。
“有趣的事情”是我认为它进展顺利,因为它似乎工作。但是,我发现这是一个使用我的用户凭据的旧会话。现在我删除了所有会话/ cookie的东西,我没有工作。
这是我到目前为止有:
# views.py
from django.shortcuts import render_to_response
from django.contrib.auth import authenticate
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def login(request):
username = password = usertype = login_error_message = ''
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
usertype = request.POST.get('usertype')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
return HttpResponseRedirect(reverse('login:success'))
else:
login_error_message = "Not active."
else:
login_error_message = "Unknown user"
return render_response(request, 'login/login.html', {
'login_error_message': login_error_message,
'usertype': usertype
})
def success(request):
if request.user.is_authenticated():
user = request.user
return render_response(request, 'login/success.html', {
'username': user.username,
})
else:
return HttpResponseRedirect('/login/')
# https://djangosnippets.org/snippets/3/
# Wrapper simplifies using RequestContext in render_to_response.
# overkill at this point, but may come in handy in view files with more views
def render_response(req, *args, **kwargs):
kwargs['context_instance'] = RequestContext(req)
return render_to_response(*args, **kwargs)
这是我的URL:
# urls.py
from django.conf.urls import patterns, url
from diataal.apps.login import views
urlpatterns = patterns('',
url(r'^$', views.login),
url(r'^success/', views.success, name='success'),
)
我的网址显示的登录页面。如果我没有在“成功”视图中添加对用户的检查,则会显示成功页面(来自登录的302响应,然后来自成功页面的200响应);这对我来说似乎没问题。
但与检查,我从“成功”视图中的302响应,我在后面再次登录页面...
我不知道如何解决这个...我是什么做错了?
答
在您的login
视图中,您只有authenticate
的用户。您不要实际上登录用户。
authenticate
只接受用户名和密码,如果凭证有效,则返回user
对象。这是一个实际的前兆login
call
你拯救了我的一天和大脑...... :) – ProX 2014-11-24 15:52:14