用axios发布对象列表?

时间:2020-01-30 23:25:28

标签: reactjs axios

我正在尝试使用Axios发布对象列表,但无法正常工作。我正在使用React前端和Django(python)后端。

我要POST这样的数据:

[
  {
    invitee: "..."
    party: "..."
  }, {
    invitee: "..."
    party: "..."
  },
  ...
]

我的第一个想法是将数组作为axios的数据属性:

const res = await authAxios.post(`/conversations/invitations/`, toAPIArr);

我也尝试JSON.stringify Array,但是在后端,我总是收到一条错误消息,说我没有发送列表。我正在做一个简单的检查(这是python):

isinstance(request.data, list) --> always false

我在这里明显做错了什么吗?

编辑::我在后端使用django-rest-framewok:

查看

class PartyList(APIView):
    def post(self, request, format=None):
        print(isinstance(request.data, list))
        serializer = PartySerializer(data=request.data, many=True)
        user = request.user
        if serializer.is_valid():
            instances = serializer.save(creator=user)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

序列化器

class PartySerializer(ModelSerializer):
    creator = ReadOnlyField(source='creator.uuid')
    class Meta:
        model = Invitation
        fields = (
            'invitee',
            'party',
        )
        read_only_fields = (
            'uuid',
        )

1 个答案:

答案 0 :(得分:0)

这个问题有一个答案,实际上是被否决并删除了,为我提供了一个可行的解决方案。

可以使用axios发送对象:

const res = await authAxios.post(`/conversations/invitations/`, {list: toAPIArr});

然后可以从后端访问此列表(这是python):

arr = request.data.get('list')

这有点骇人听闻,但到目前为止对我来说还是可行的。如果有正确的方法(暗示这可能是错误的方法)来执行此操作,则可能会有人共享它。