【问题标题】:allow post requests in django REST framework在 django REST 框架中允许发布请求
【发布时间】:2018-10-30 19:33:58
【问题描述】:

我正在使用 django REST 框架创建一个简单的 REST API。我已经通过向 api 发送 GET 请求成功获得了响应,但是由于我想发送 POST 请求,所以 django rest 框架默认不允许 POST 请求。

如下图所示,仅允许 GET、HEAD、OPTIONS,但不允许 POST 请求

views.py 中的 GET 和 POST 方法

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)

如何在 django REST framework 中允许 POST 请求?

【问题讨论】:

    标签: django django-rest-framework django-views http-post


    【解决方案1】:

    代码的问题是,您在return 语句之后添加了def post()

    要解决,只需将您的indentation 级别更正如下,

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

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 1970-01-01
      • 2018-07-31
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      相关资源
      最近更新 更多