用户在登录页面上进行身份验证,但在重定向页面上未显示为已通过身份验证

时间:2017-01-05 23:59:05

标签: django-views

我看过很多过时的帖子提到了render_to_response。根据我的理解,redirect()应该维护上下文。

以下是我的登录视图的代码

def login(request):

    context = {}
    context['form'] = LoginForm
    context['loginFailure'] = False

    if request.POST:
        username = request.POST['user']
        password = request.POST['password']

        user = authenticate(username=username, password=password)

        if user is not None:
            if user.is_authenticated:
                print('logged in on /login!')
                return redirect('/')
        else:            
            context['loginFailure'] = True
            print('Invalid login on /login!')
            return render(request,'q/login.html', context )    

    return render(request,'q/login.html', context )

当我使用有效凭据登录时,它正确地打印到终端。

在索引视图中,我有这段代码

if request.user.is_authenticated:
    print("index: Authenticated!")
else:
    print('index: Not authenticated...')

但每次我成功登录并且/ login /打印成功的消息时,索引视图会告诉我我没有经过身份验证。成功登录后,我需要做些什么才能维护上下文?

1 个答案:

答案 0 :(得分:0)

您还需要调用django登录。 doc ref

from django.contrib.auth import authenticate, login
if user is not None: 
    login(request, user)
    print('logged in on /login!') 
    return redirect('/')