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

Min*_*nnR 0 django django-middleware django-signals django-authentication django-allauth

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

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

e4c*_*4c5 5

你需要利用 Allauth 的信号。特别是用户登录信号

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

Sent when a user logs in.
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

这段代码应该放在 django 启动时可能会被读取的地方。models.py 和 views.py 是不错的选择。