如何在 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
会在用户登录时触发。这可以满足您的目的。
我想在用户登录我的网站后执行一项或多项功能。这怎么可能?我调查了中间件。 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
会在用户登录时触发。这可以满足您的目的。