request.POST isn't populated from an application/json POST request

What is submitted in the POST data portion of the request is not a dict, nor is it JSON. What you are looking at as request.POST is the result of Django reformatting the submitted data and creating a Dict-like object from what was submitted. They’re two different things.

By definition and documentation, request.POST creates a QueryDict from form data. All other uses require the use of request.body.

There are constraints and limitations of what can be submitted from both formats, and there’s not a strict 1-1 correspondence between the two.

For more information about what is actually submitted, see:

I would find that surprising. But in the absence of any details, it’s all conjecture.