Rest API参数是没有模型的空Serializer

问题描述 投票:2回答:1

在我看来,我无法检索其余API中的参数。当我打印数据时我得到{'in_text':''}

serialize认识.朋友

class StandardizerSerializer(serializers.Serializer):
    in_text = serializers.CharField(max_length=2000,required=False)

views.朋友

class standardiz_text(APIView):
    def post(self, request):
        #serializer =  StandardizerSerializer(context={'request': request})
        serializer =  StandardizerSerializer(data=request.data)
        print(repr(serializer))
        if serializer.is_valid(raise_exception=True):
            print(serializer.data)
        else:
            print("----------not valid")
        return Response({'standardizer_text': ' test data'})

url来自邮递员的电话

http://127.0.0.1:8000/standardiz/text/?in_text=tesinput

输出是

StandardizerSerializer(data={}):
    in_text = CharField(max_length=2000, required=False)
{}
django django-rest-framework
1个回答
2
投票

您将in_text数据作为url查询参数传递。 URL查询参数位于request.query_params属性中。所以,如果你想从query_params序列化一些东西,你必须将它传递给序列化器而不是request.data

#code
class standardiz_text(APIView):
    def post(self, request):
        serializer = StandardizerSerializer(data=request.query_params) # change is here &lt&lt&lt&lt&lt
        if serializer.is_valid(raise_exception=True):
            print(serializer.data)
        else:
            print("----------not valid")
        return Response({'standardizer_text': ' test data'})
© www.soinside.com 2019 - 2024. All rights reserved.