Django Rest Framework некорректно изменяет текст запроса в json

Я получил следующий код:

from django.contrib.auth import authenticate
from django.views.decorators.csrf import csrf_exempt
from rest_framework.authtoken.models import Token
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from rest_framework.status import HTTP_200_OK, HTTP_400_BAD_REQUEST, HTTP_404_NOT_FOUND


@csrf_exempt
@api_view(["POST"])
@permission_classes((AllowAny,))
def login(request):
    print(request.data)
    username = request.data.get("username")
    password = request.data.get("password")
    if username is None or password is None:
        return Response({"error": "Please provide both username and password"}, status=HTTP_400_BAD_REQUEST)
    user = authenticate(username=username, password=password)
    if not user:
        return Response({"error": "Invalid Credentials"}, status=HTTP_404_NOT_FOUND)
    token, _ = Token.objects.get_or_create(user=user)
    return Response({"token": token.key}, status=HTTP_200_OK)

Когда я отправляю нижеприведенный запрос по адресу http://localhost:80/api/user/login

{
   "password":"#%RFzv@2BLYM&#jNh6o@46*74f38SV4q",
   "username":"kamil1234"
}

Запросить фотографию

Я получаю в качестве request.data следующие значения:

<QueryDict: {'_content_type': ['application/json'], '_content': ['{\r\n   "password":"#%RFzv@2BLYM&#jNh6o@46*74f38SV4q",\r\n   "username":"kamil1234",\r\n}']}>

Я не уверен, что я делаю неправильно. Поскольку, когда я использую curl, все работает правильно.

curl --location --request POST 'http://localhost:80/api/user/login' \
--header 'Content-Type: application/json' \
--data-raw '{
    "password": "#%RFzv@2BLYM&#jNh6o@46*74f38SV4q",
    "username": "kamil1234"
}'

Заранее благодарю за помощь.

Вы должны установить парсеры по умолчанию для rest-framework.

Это поможет: Parsers

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