Проблема

Я интегрировал Django REST Framework JSON API (https://django-rest-framework-json-api.readthedocs.io/en/stable/) в наш проект.

Эта библиотека работает поверх:

Я частично заработал, используя их документы, и мой greeter/views.py выглядел примерно так:

"""Defines the Greeter views"""
from rest_framework import viewsets
from .models import Greeter
from .serializers import GreeterSerializer


class GreeterViewSet(viewsets.ModelViewSet):
    """API endpoints for Greeter"""

    queryset = Greeter.objects.all()
    serializer_class = GreeterSerializer

Однако по какой-то причине, используя веб-интерфейс, я могу выполнять POST и создавать объекты приветствия, но использование curl из командной строки не помогло.

Я не знал, как взаимодействовать с django и фреймворком REST для решения моей проблемы.

Решение

В итоге мне пришлось переопределить определенные методы, чтобы устранить неполадки, которые получали Django и платформа REST. Итак, greeter/views.py теперь выглядит так:

"""Defines the Greeter views"""
from rest_framework import viewsets
from rest_framework.response import Response
from .models import Greeter
from .serializers import GreeterSerializer


class GreeterViewSet(viewsets.ModelViewSet):
    """API endpoints for Greeter"""

    queryset = Greeter.objects.all()
    serializer_class = GreeterSerializer
    def create(self, request):
       print('#########creating')
       print(request.data)
       return Response()

Как только я смогу переопределить и вернуть контроль над фреймворками, я смогу приступить к устранению неполадок в запросе и его параметрах.

Примечания

Команда curl, которая мне понадобилась, чтобы все заработало:

$ curl \
      -H 'Content-Type: application/vnd.api+json;' \
      -H 'Accept: application/vnd.api+json; indent=2' \
      -X POST --data @greeter.json \
      http://localhost:8000/greeters/

С greeter.json:

{
  "data": {
    "type": "Greeter",
    "id": null,
    "attributes": {
      "message": "greetings"
    }
  }
}

использованная литература