#python #django
#python #django
Вопрос:
У меня есть следующий код:
@receiver(user_logged_in)
def user_logged_in_callback(sender, request, user, **kwargs):
ip = request.META.get('REMOTE_ADDR')
AuditEntry.objects.create(action='User logged in', ip=ip, username=user.username)
Это отлично работает.
В views.py У меня есть индивидуальный приемник:
@receiver(pre_save, sender=User)
def user_updated(sender, **kwargs):
user = kwargs.get('instance', None)
ip = request.META['REMOTE_ADDR']
if user:
new_password = user.password
try:
old_password = User.objects.get(pk=user.pk).password
except User.DoesNotExist:
old_password = None
if new_password != old_password:
AuditEntry.objects.create(action='Password has changed', ip="127.0.0.1", username=user.username)
Наверняка он падает с ошибкой «запрос не найден».
Я не могу понять, как извлечь IP.
Спасибо.
Или, может быть, я перепроектирую свой код? Все, что мне нужно, это создать AuditEntry с параметрами после изменения модели пользователя.
Комментарии:
1. Вы забыли параметр запроса в функции user_updated?
2. user_updated() отсутствует 1 требуемый позиционный аргумент: ‘запрос’. Это нужно как-то пропустить.
Ответ №1:
Для меня похоже, что вы забыли параметр запроса в своей функции.
Вам нужно передать параметр запроса.
Комментарии:
1. Я попытался, он вернул ‘user_updated() отсутствует 1 требуемый позиционный аргумент: ‘запрос»
2. затем проверьте, где вы вызываете user_updated, еще одна вещь, проверьте, есть ли Ip в kwargs geeksforgeeks.org/args-kwargs-python