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