我想拥有每次获取请求并检查用户是否登录的功能,如果用户登录则返回用户对象,否则重定向到登录,这就是我试图做的事情
def is_login(request):
userID = request.session.get('mainSession', 0)
next = resolve(request.path_info).url_name
print(1)
if userID != 0:
print(2)
user = msignup.objects.filter(id=userID).first()
return user
print(3)
return HttpResponseRedirect(reverse('login') + "?next=
{}".format(next))
当用户被挂出并且请求没有mainSession时,我尝试使用以下视图测试此函数:
def email_activation(request):
user = is_login(request)
print(4)
email = user.email
return render(request, 'account/emailActivation.html',{'email':
email})
作为回应我得到了这个: ' HttpResponseRedirect'对象没有属性'电子邮件'
我对照片的回应是:
4
为什么3次重定向没有发生?我做错了什么?
答案 0 :(得分:0)
首先。 Django有几种方法可以做这个内置的。我强烈建议你使用已经制作的东西。 login_required装饰器非常适合您的用例。
现在,如果你正在做的是一个实验。您遇到的问题是您在is_login上返回响应Redirect对象。你可以做些什么来使这项工作(我再次建议你不要使用这条路线),是另一个重定向到登录页面的函数,并且如果用户登录则让is_login函数返回True或False
然后你就可以做类似的事情:
if not is_login(request):
return redirectToSigninPage(request)