在我的系统中,我想跟踪所有用户的登录/注销活动,但是在保存用户密码重置活动的日志时卡住了。
如何在UserActivity模型中存储此用户活动?
有什么建议吗?
如何在密码重置成功视图中获取用户电子邮件?
模型
class UserActivity(models.Model):
change_message = models.CharField(max_length=255)
ip = models.GenericIPAddressField(null=True)
user = models.CharField(max_length=255, blank=True, null=True)
action_time = models.DateTimeField(auto_now_add=True)
@receiver(user_logged_in)
def user_logged_in_callback(sender, request, user, **kwargs):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='User Logged in', ip=ip, user=user.email)
@receiver(user_logged_out)
def user_logged_out_callback(sender, request, user, **kwargs):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='User Logged out', ip=ip, user=user.email)
@receiver(user_login_failed)
def user_login_failed_callback(sender, request, credentials, **kwargs):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='User Login Failed', ip=ip, user=credentials.get('email', None))
用于重置密码的网址
path('password-reset/confirm/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html',
success_url=reverse_lazy('users:password_reset_complete'),
form_class=PasswordResetConfirmForm),
name='password_reset_confirm'),
path('password-reset/complete/', views.PasswordResetSuccessView.as_view(), name='password_reset_complete')
视图
class PasswordResetSuccessView(View):
template_name = 'users/password_reset_complete.html',
def get(self, request):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='An user resets the password', ip=ip, user = ? )
答案 0 :(得分:0)
好吧,我通过从cust_id centers cluster_number
1 -0.1806 1
2 -0.3596 1
3 -0.7953 2
4 0.0781 ..
5 -0.5887 3
覆盖save()
方法来解决此问题,并从SetPasswordForm
中删除了逻辑。
如果有更好的方法,请告诉我
CompleteView