Check_token в методе PUT не работает DRF
Итак, у меня есть представление, которое отправляет новому пользователю письмо с подтверждением для активации с помощью uid и токена. Эта часть работает нормально. Когда пользователь нажимает на ссылку, он должен отправить PUT в мой ActivateUserAPI, где он берет 'uid' и 'token' из url и устанавливает email_confirmed = True, но это не проходит мимо функции djangos check_token
url:
path('api/auth/activate/<path:uid>/<path:token>',
ActivateUserAPI.as_view(), name='activate'),
serializer:
class ActivationSerializer(serializers.ModelSerializer)
class Meta:
model = User
fields = ('id', 'email_confirmed',)
view:
class ActivateUserAPI(generics.UpdateAPIView):
serializer_class = ActivationSerializer
permission_classes = [
permissions.AllowAny
]
def put(self, request, *args, **kwargs):
token = self.kwargs['token']
try:
uid = force_str(urlsafe_base64_decode(self.kwargs['uid']))
user = User.objects.get(pk=uid)
except(TypeError, ValueError, OverflowError, User.DoesNotExist):
user = None
if user is not None and account_activation_token.check_token(user, token):
serializer = ActivationSerializer(user, data=request.data)
if serializer.is_valid():
user.email_confirmed = True
user.save()
return Response(serializer.data)
return HttpResponse('Thank you for your email confirmation. Now you can login your account.')
else:
return HttpResponse('Activation link is invalid!')
Странно то, что если я обращаюсь к api напрямую через url, он работает нормально, как в ссылке ниже