如何在Django Rest API中使用@api_view发布数据值?

时间:2018-08-14 06:29:58

标签: django python-3.x api django-rest-framework

我有两个API。从一个API,我正在将字符串数据发送到第二个API。在第二个API中进行计算时,我将JSON格式的数据保存在API中,然后将数据发送回第一个API。这是工作。但是在第二个API中,如果我尝试从内容框中发布字符串数据,则会显示错误。此处的媒体类型为“ application / json”。那么如何从API视图发布数据?我已经添加了第二个API的屏幕截图:

input data

Error Message

我的第二个API的views.py的某些部分:

@api_view(['GET', 'POST'])
def sentenceList(request):
    if request.method == 'GET':
        queryset = Bucketlist.objects.all()
        serializer = BucketlistSerializer(queryset, many=True)
        return Response(serializer.data)

    elif request.method == 'POST':
        triples = getTriples(request.data)
        keys = ['sub','predi','obj']
        demo_data = dict(zip(keys,triples[0]))
        serializer = BucketlistSerializer(data=demo_data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

1 个答案:

答案 0 :(得分:0)

我认为您应该为纯文本编写一个自定义解析器,并在您的视图中使用它:

ERROR: Can't get master address from ZooKeeper; znode data == null

和您的看法:

from rest_framework.parsers import BaseParser, JsonParser
from rest_framework.decorators import parser_classes

class PlainTextParser(BaseParser):
    """
    Plain text parser.
    """
    media_type = 'text/plain'

    def parse(self, stream, media_type=None, parser_context=None):
        """
        Simply return a string representing the body of the request.
        """
        return stream.read()