如何在Django中获得登录处理中的用户会话?
我在学Django。嗯,或多或少;) 我正在写一份登录表。因为我想学习东西是如何工作的,因为我需要这样做 我不能把事情做好。在身份验证之后,用户在我的“成功”视图中似乎不知道,因为它重定向回登录 我确实设置了我的中间件课程 “有趣的是”我认为它进行得很顺利,因为它似乎很有效。但是,我发现这是一个使用我的用户凭据的旧会话。现在,我删除了所有会话/cookie内容,但它不起作用 这就是我到目前为止所做的:如何在Django中获得登录处理中的用户会话?,django,session,login,django-views,Django,Session,Login,Django Views,我在学Django。嗯,或多或少;) 我正在写一份登录表。因为我想学习东西是如何工作的,因为我需要这样做 我不能把事情做好。在身份验证之后,用户在我的“成功”视图中似乎不知道,因为它重定向回登录 我确实设置了我的中间件课程 “有趣的是”我认为它进行得很顺利,因为它似乎很有效。但是,我发现这是一个使用我的用户凭据的旧会话。现在,我删除了所有会话/cookie内容,但它不起作用 这就是我到目前为止所做的: # views.py from django.shortcuts import render_
# 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)
这是我的网址:
# 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'),
)
我的url显示登录页面。如果我没有在“success”视图中添加对用户的检查,则会显示success页面(login的302响应和success页面的200响应);我觉得没问题
但是通过检查,我从“成功”视图中得到302响应,我又回到了登录页面
我不知道如何解决这个问题。。。我做错了什么?在您的
登录
视图中,您只验证
用户。您实际上没有登录用户
如果凭据有效,则仅接受用户名和密码并返回用户
对象。这是指向实际位置的预光标