如何使用内置登录视图添加会话变量

时间:2018-05-25 16:50:30

标签: python django session login signals

我使用了django制作的内置登录视图,但现在我不知道如何在用户登录时设置会话。我正在考虑将用户重定向到将添加这些会话变量的新视图但我不认为这是一个理想的解决方案。我的另一个问题是:我可以在模板中使用这些会话变量吗?如果没有,我如何将这些数据提供给模板?

我也在使用Django 1.11和python 2.7。

1 个答案:

答案 0 :(得分:1)

我想出了我需要做的事情。你需要使用信号。基本上你只需要设置一个信号,一旦用户登录,设置会话 以下是我在代码中的外观:

@receiver(user_logged_in)
def sig_user_logged_in(sender, user, request, **kwargs):
    request.session['isLoggedIn'] = True
    request.session['isAdmin'] = user.is_superuser
    request.session['team'] = user.teams
    request.session['email'] = user.email
    isLoggedIn = request.session.get('isLoggedIn',False)
    isAdmin = request.session.get('isAdmin',False)
    team =request.session.get('team','')
    email = request.session.get('email','')
    return render(
        request,
        'registration/login.html',
        context = {'isLoggedIn':isLoggedIn,'isAdmin':isAdmin,'team':team,'email':email},
    )

确保拥有这些导入:

from django.dispatch import receiver
from django.contrib.auth.signals import user_logged_in

此外,如果你想知道我把它放在哪个文件中,那就是views.py