Как решить ошибку HttpRequest AssertionError в представлении Django Friend Request?

Я работаю над проектом Django, в котором пользователи могут отправлять и принимать запросы на дружбу. Когда запрос на дружбу принят, я хочу добавить отправителя и получателя в список друзей друг друга и отправить уведомление. Однако при попытке отправить уведомление я сталкиваюсь с ошибкой.

Описание проблемы:

Когда пользователь принимает запрос на добавление в друзья, я хочу добавить отправителя в список друзей получателя и наоборот. Однако я получаю следующую ошибку:

AssertionError: The requestargument must be an instance ofdjango.http.HttpRequest, not userauths.models.User. [28/May/2024 16:09:33] "GET /accept-friend-request/?id=8 HTTP/1.1" 500 121207 поэтому позвольте мне предоставить ссылку api на функцию path("accept-friend-request/", views.accept_friend_request, name="accept-friend-request"),

позвольте мне предоставить функцию accept_friend_request

@api_view(['GET'])
@login_required
def accept_friend_request(request):
    if request.method == 'GET':
        sender_id = request.GET.get('id')
        receiver = request.user

        # Log the sender_id
        logger.debug(f"Sender ID: {sender_id}")

        try:
            # Retrieve the sender user from the database
            sender = User.objects.get(id=sender_id)

            # Retrieve the sender's profile
            sender_profile = sender.profile

            # Add sender's profile to receiver's friends and vice versa
            receiver.profile.friends.add(sender_profile)
            sender_profile.friends.add(receiver.profile)

            # Delete the friend request
            friend_request = FriendRequest.objects.filter(receiver=receiver, sender=sender).first()
            friend_request.delete()

            # Send notification
            send_notification(sender, receiver, None, None, noti_friend_request_accepted)

            data = {
                "message": "Accepted",
                "bool": True,
            }
            return JsonResponse({'data': data})
        except User.DoesNotExist:
            logger.error(f"User with ID {sender_id} does not exist.")
            return JsonResponse({'error': 'User does not exist.'}, status=404)
    else:
        return JsonResponse({'error': 'Only GET requests are allowed.'})

Вопрос: Как разрешить ошибку AssertionError, связанную с HttpRequest, в данном контексте?

Любая помощь или руководство будут очень признательны!

Что я пробовал:

Ведение журнала: Я добавил логирование, чтобы убедиться, что идентификатор отправителя извлекается правильно, что и происходит. Получение профиля: Я подтвердил, что доступ к sender.profile и receiver.profile осуществляется корректно. Проверка базы данных: Я подтвердил, что и пользователь, и запрос друга существуют в базе данных.

Ожидаемое поведение: Я ожидаю, что запрос на дружбу будет принят, пользователи будут добавлены в список друзей друг друга, и уведомление будет отправлено без возникновения AssertionError.

Я думаю, что эта функция в порядке, проблема, скорее всего, кроется в send_notification одной.

Вы называете это так :

send_notification(sender, receiver, None, None, noti_friend_request_accepted)

Если send_notification является представлением, оно неявно ожидает объект HttpRequest в качестве первого аргумента, в то время как вы предоставляете объект пользователя :

sender = User.objects.get(id=sender_id)

По-прежнему предполагая, что send_notification - это представление, вы должны извлечь из него логику, отправляющую уведомление, и вызвать ее внутри представления accept_friend_request, потому что вызов другого представления будет работать не так, как вы ожидаете.

Вернуться на верх