出于设计原因,我有登录屏幕的IFRAME。 当用户登录时,我触发父级重定向到' / my_app / welcome /'使用redirect.html。 重定向用户没有登录后。我在视图中检查了request.user.username(对于' / my_app / welcome /') 但登录丢失了。请告知如何保持登录状态?
档案views.py:
def login(request, template_name):
username = password = ''
if request.POST:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
request.user = user
if user is not None:
if user.is_active:
return TemplateResponse(request, 'accounts/redirect.html', {'redirect_url':'/my_app/welcome/'})
return render_to_response(template_name, locals(),
context_instance=RequestContext(request))
文件redirect.html:
<html>
<head>
<script>
window.top.location.href = '{{ redirect_url }}';
</script>
</head>
<body></body>
</html>
由于
答案 0 :(得分:-1)
您需要添加
auth_login(request, user)
在if user.is_active:
之后
from django.contrib.auth import login as auth_login
答案 1 :(得分:-2)
我不确定为什么你认为简单地将用户分配到request.user
足以登录它们。它不是,因为它没有像设置会话cookie那样做。
正如the documentation所解释的那样,记录用户的正确方法是调用适当命名的login
函数。您可能希望将您的视图函数称为不同的名称以避免名称混淆。