2017-01-05 2 views
0

Я видел много устаревших сообщений, в которых упоминается 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...') 

Но каждый раз, когда я логин успешно и/Логин/печатает сообщение об успешном, вид индекса говорит мне, что я не прошел проверку подлинности. Что мне нужно сделать, чтобы поддерживать контекст после успешного входа в систему?

ответ

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('/')