如何向 Django Admin 添加 Hook ,以便在用户登录或注销时执行功能?
最佳答案
遗憾的是,Django 不会在该事件上发送任何信号....但您可以制作自己的自定义 AuthorizationBackend,使您能够这样做:
from django.dispatch import Signal
post_login = Signal(providing_args=['user'])
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User
class AuthSignalBackend(ModelBackend):
def authenticate(self, username=None, password=None):
try:
user = User.objects.get(username=username)
if user.check_password(password):
post_login.send(sender=None, user=user)
return user
except User.DoesNotExist:
return None
def login_handler(sender, **kwargs):
print "logging in..."
post_login.connect(login_handler)
要启用它,您必须将 AUTHENTICATION_BACKENDS = (myapp.mymodule.AuthSignalBackend',)
放入您的 settings.py 中!
关于python - 破解 Django 管理员,用于登录/注销的 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037558/