Django Rest Framework API POST получает код состояния 200 вместо 201 - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в Django и python. У меня есть веб-сайт, который уже работает, используя docker. И URL-адрес API находится на: http://gmlews.com/api/data. Когда я хочу протестировать API с помощью почтальона, метод GET работает нормально, но для метода POST возвращается ответ 200 OK, а не 201 создан. Из-за этого мои данные не могут быть сохранены в API.

Вот мой код для API:

restapi / serializers.py:

from .models import Data,Node
from rest_framework import serializers


class DataSerializer(serializers.ModelSerializer):
   class Meta:
    model = Data
    fields = '__all__'


class NodeSerializer(serializers.ModelSerializer):
   class Meta :
    model = Node
    fields = '__all__'

restapi / views.py:

import json
from django.views.generic import View
from django.shortcuts import render
from rest_framework import routers, serializers, viewsets
from rest_framework.response import Response
from restapi.serializers import DataSerializer, NodeSerializer
from restapi.models import Data, Node
from django_filters.rest_framework import DjangoFilterBackend
from django.http import HttpResponse
from rest_framework.views import APIView
# Create your views here.


class DataViewSet(viewsets.ModelViewSet):
    queryset = Data.objects.all()
    serializer_class = DataSerializer
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['node_id']


class MapViewSet(viewsets.ModelViewSet):
    queryset = Data.objects.filter(node_id=1).order_by('-id')[:1]
    serializer_class = DataSerializer


class NodeViewSet(viewsets.ModelViewSet):
    queryset = Node.objects.all()
    serializer_class = NodeSerializer

urls.py:

from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.urls import include, path
from restapi import views
""" for routers api root"""
from restapi.models import Data, Node
from rest_framework import routers
from restapi.views import DataViewSet, NodeViewSet, MapViewSet

router = routers.DefaultRouter()

router.register(r'data', DataViewSet, 'data')

router.register(r'node', NodeViewSet, 'node')

router.register(r'map', MapViewSet, 'map')


urlpatterns = [
path('admin/', admin.site.urls),
path(r'api/', include(router.urls)),
path(r'', include('rest_framework.urls', namespace='rest_framework')),

]

Может ли кто-нибудь помочь мне с этой проблемой? Я действительно не понимаю, почему метод POST получил статус 200. Я хочу, чтобы он получил статус 201, чтобы мои данные можно было сохранить. Спасибо

1 Ответ

0 голосов
/ 07 мая 2020

Получил доступ к вашему сайту и написал сообщение. Он вернул 201. Следующие доказательства:

enter image description here

Если вы получаете доступ к своим данным, элемент с идентификатором 15 был создан мной, а текущий ответ на этот POST был 201.

...