如何在Django中获得登录处理中的用户会话?

如何在Django中获得登录处理中的用户会话?,django,session,login,django-views,Django,Session,Login,Django Views,我在学Django。嗯,或多或少;) 我正在写一份登录表。因为我想学习东西是如何工作的,因为我需要这样做 我不能把事情做好。在身份验证之后,用户在我的“成功”视图中似乎不知道,因为它重定向回登录 我确实设置了我的中间件课程 “有趣的是”我认为它进行得很顺利,因为它似乎很有效。但是,我发现这是一个使用我的用户凭据的旧会话。现在,我删除了所有会话/cookie内容,但它不起作用 这就是我到目前为止所做的: # views.py from django.shortcuts import render_

我在学Django。嗯,或多或少;) 我正在写一份登录表。因为我想学习东西是如何工作的,因为我需要这样做

我不能把事情做好。在身份验证之后,用户在我的“成功”视图中似乎不知道,因为它重定向回登录

我确实设置了我的中间件课程

“有趣的是”我认为它进行得很顺利,因为它似乎很有效。但是,我发现这是一个使用我的用户凭据的旧会话。现在,我删除了所有会话/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)
这是我的网址:

# 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响应,我又回到了登录页面


我不知道如何解决这个问题。。。我做错了什么?

在您的
登录
视图中,您只
验证
用户。您实际上没有登录用户

如果凭据有效,则仅接受用户名和密码并返回
用户
对象。这是指向实际位置的预光标