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

How to execute code after authentication in Django?

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

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

您需要接入 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 是很好的候选者。

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