django -webpu sh: не удалось найти пользователя в объекте запроса - PullRequest
0 голосов
/ 14 апреля 2020

Я использую DRF и настроил промежуточное ПО аутентификации с помощью бэкенда JWT.

Я использовал пакет safwanrahman/django-webpush, который позволяет отправлять уведомления на основе VAPID.

I получил пакет, работающий со всей установкой, API для сохранения информации вызывается и выполняется успешно. Единственная проблема сейчас заключается в том, что пользовательская информация не сохраняется. Мои выводы говорят, что это потому, что я использую DRF. Способ, которым DRF вводит пользователя в запрос, может отличаться от традиционного Django. И, следовательно, функция request.user в представлении пакета не найдена.

@require_POST
@csrf_exempt
def save_info(request):
    ...

    # the request.user mostly does not exist
    web_push_form.save_or_delete(
        subscription=subscription, user=request.user,
        status_type=status_type, group_name=group_name)

    ...

Сейчас я думаю сделать клон репозитория и внести изменения непосредственно для отладки и поиска точного проблема / решение. Будет ли это работать?

1 Ответ

0 голосов
/ 19 апреля 2020

Данный пакет safwanrahman/django-webpush не совместим с Django rest Framework, поскольку рассматриваемые базовые классы пакета используют методы post и http из базовых классов django, которые не могут найти пользователя, если вы изменили промежуточное ПО аутентификации при использовании DRF.

Решение этой проблемы состоит в том, чтобы импортировать папку пакета и внести изменения в представление так, чтобы вызываемая функция представления была унаследована от базовых классов DRF и, следовательно, в-четвертых, могла найти зарегистрированного пользователя в объекте запроса. , Я все еще пытаюсь понять, может ли каким-то образом только этот класс быть расширен и изменен. Но пока это решение работает для меня.

Спасибо.

...