如何在Django中进行身份验证后执行代码?

时间:2016-08-01 11:21:43

标签: django django-authentication django-allauth django-signals django-middleware

我想在用户登录我的网站后执行一个或多个功能。这怎么可能?我查看了中间件。 Djangobook说我需要在Django处理的每个请求上运行一段代码。但是,我只需要在身份验证成功发生时运行代码。

注意:我正在使用Django Allauth进行身份验证,我没有任何自己的视图来登录用户。

2 个答案:

答案 0 :(得分:4)

你需要使用Allauth的signals。具体来说,用户登录信号

allauth.account.signals.user_logged_in(request, user)

Sent when a user logs in.

因此,在项目中添加类似于以下内容的代码。

from django.dispatch.dispatcher import receiver
from allauth.account.signals import user_logged_in

@receiver(user_logged_in, dispatch_uid="unique")
def user_logged_in_(request, user, **kwargs):
    print request.user

此代码应位于django启动时可能会读取的位置。 models.py和views.py是很好的候选者。

答案 1 :(得分:1)

根据官方documentation,有一个信号allauth.account.signals.user_logged_in会在用户登录时触发。这可以满足您的需求。

相关问题