Django не обрабатывает полезную нагрузку POST-запроса от axios

У меня есть стек React + Django REST Framework. DRF работает как API, а React как SPA. И я действительно запутался, почему POST запрос не работает. Если требуется дополнительная информация, пожалуйста, спросите меня.

В React

Я делаю POST-запрос с помощью axios следующим образом:

axios
    .post(
        '/api/auth/register/',
        registrationInfo,
        { headers: { "Content-Type": "application/json" } }
    )
    .then((response) => {
        setRegistrationStatus(response.data.status)
    })
    .catch((error) => { console.log(error) })

Внешняя часть запроса работает нормально. Показаны полезная нагрузка и заголовки: payload, headers

В DRF Мой сериализатор для регистрации выглядит следующим образом:

class RegistrationSerializer(UserSerializer):
    password = serializers.CharField(max_length=200, write_only=True, required=True)
    email = serializers.EmailField(required=True, write_only=True, max_length=200)

    class Meta:
        model = CustomUser
        fields = ['id', 'email', 'password', 'phone', 'first_name', 'last_name', 'is_active', 'created_at', 'modified_at']

    def create(self, validated_data):
        try:
            user = CustomUser.objects.get(email=validated_data['email'])
        except ObjectDoesNotExist:
            user = CustomUser.objects.create_user(**validated_data)
            return user

... и мнения:

class RegistrationViewSet(viewsets.ModelViewSet, TokenObtainPairView):
    serializer_class = RegistrationSerializer
    permission_classes = (AllowAny,)
    http_method_names = ['post']

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=self.request.query_params)

        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        refresh = RefreshToken.for_user(user)
        res = {
                "refresh": str(refresh),
                "access": str(refresh.access_token),
                }
        return Response({
            "user": serializer.data,
            "refresh": res["refresh"],
            "token": res["access"]
            }, status=status.HTTP_201_CREATED)

Вывод DRF при выполнении запроса сбивает с толку. В developer tools-network ответ {"email":["This field is required."],"password":["This field is required."]}. А в консоли я имею

Bad Request: /api/auth/register/
[15/Oct/2022 02:00:37] "POST /api/auth/register/ HTTP/1.1" 400 76

Я не уверен, как работает payload в POST-запросах, но управление payload в GET-запросе с помощью axios (который работает для меня) прикрепляет payload к URL, в то время как местоположение payload в POST-запросе сбивает с толку. В postman достигается желаемый результат. Но он кодирует полезную нагрузку по url: POST request with postman

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