我看过很多过时的帖子提到了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 /打印成功的消息时,索引视图会告诉我我没有经过身份验证。成功登录后,我需要做些什么才能维护上下文?
答案 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('/')