TypeError: wrapper() missing 1 required positional argument: 'backend' happens while trying to do Oauth2 login

вот мой views.py

@api_view(http_method_names=['POST']) 
@permission_classes([AllowAny])
@psa()

def exchange_token(request, backend): 
    serializer = UserSerializer(data=request.data)

    if serializer.is_valid(raise_exception=True):
        user = request.backend.do_auth(serializer.validated_data['access_token'])

        if user:#drf built in token authentication??
            token, _ = Token.objects.get_or_create(user=user) # drf token authentication
            return Response({'token':token.key})
        else:
            return Response(
                {'errors':{'token':'Invalid token'}},
                status = status.HTTP_400_BAD_REQUEST,
            )

https://www.toptal.com/django/integrate-oauth-2-into-django-drf-back-end. Я следую этой странице и пытаюсь сделать запрос с помощью postman. Но происходит вышеуказанная ошибка. Я думаю, что я должен передать аргумент "backend" при запросе, но я не знаю, что делать прямо сейчас...

кто-нибудь, пожалуйста, скажите мне, как я могу решить эту проблему

Traceback (most recent call last):
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/django/views/generic/base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "/home/park/miniconda3/envs/wantu/lib/python3.8/site-packages/rest_framework/decorators.py", line 50, in handler
return func(*args, **kwargs)
TypeError: wrapper() missing 1 required positional argument: 'backend'

полный отслеживание ошибки здесь

Ваша конфигурация URL неверна - в ней отсутствует именованный параметр backend. Смотрите это из кода учебника, на который вы ссылаетесь:

URL, на котором находится это представление, должен включать поле бэкенда, например:

 url(API_ROOT + r'social/(?P<backend>[^/]+)/$', exchange_token),

В вашем случае необходимо добавить параметр backend в URL:

urlpatterns = [
    path("/kakao/login/<str:backend>/", views.exchange_token),
]
Вернуться на верх