разрешить отправку запросов в django REST framework - PullRequest
0 голосов
/ 21 мая 2018

Я создаю простой API для отдыха, используя django REST Framework.Я успешно получил ответ, отправив запрос GET на API, но так как я хочу отправить запрос POST, среда отдыха django не разрешает запрос POST по умолчанию.

Как на рисунке (ниже) только GET,HEAD, OPTIONS разрешены, но не POST-запрос enter image description here

Методы GET и POST внутри views.py

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from profiles_api import serializers
from rest_framework import status
# Create your views here.


class HelloApiView(APIView):
    """Test APIView"""

    #Here we are telling django that the serializer class for this apiViewClass is serializer.HelloSerializer class
    serializer_class = serializers.HelloSerializer

    def get(self, request, format=None):
    """Retruns a list of APIViews features."""

    an_apiview = [
        'Uses HTTP methods as fucntion (get, post, patch, put, delete)',
        'It is similar to a traditional Django view',
        'Gives you the most of the control over your logic',
        'Is mapped manually to URLs'
    ]

    #The response must be as dictionary which will be shown in json as response
    return Response({'message': 'Hello!', 'an_apiview': an_apiview})

    def post(self,request):
        """Create a hello message with our name"""

        serializer = serializer.HelloSerializer(data=request.data)

        if serializer.is_valid():
            name = serializer.data.get('name')
            message = 'Hello! {0}'.format(name)
            return Response({'message':message})
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Как разрешитьPOST-запросы в django REST framework?

1 Ответ

0 голосов
/ 21 мая 2018

Проблема с кодом была в том, что вы добавили def post() после оператора return.

Чтобы решить, просто исправьте ваш уровень indentation, как показано ниже,

class HelloApiView(APIView):
    def get(self, request, format=None):
        return Response()

    def post(self, request):
        return Response()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...