gpt4 book ai didi

python - 将对象或对象数组发布到 API

转载 作者:行者123 更新时间:2023-12-01 04:58:27 26 4
gpt4 key购买 nike

我想要一个 REST API 端点,我可以在其中发布 json 对象或 json 对象数组。

我设法通过重新定义 ModelViewSet 的创建方法来做到这一点:

def create(self, request, *args, **kwargs):

serializer = self.get_serializer(data=request.DATA, many=False)
if serializer.is_valid():
serializer.save()
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
else:
serializer = self.get_serializer(data=request.DATA, many=True)
if serializer.is_valid():
serializer.save()
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我使用序列化器中的 is_valid() 来了解数据是否包含对象或数组(许多设置为 True 或 False),但因此我失去了用于其他目的(如字段验证)的序列化器验证。

是否有更好的方法来实现这种行为?

我应该创建另一个具有另一个 url 的函数以便能够发布对象数组吗?支持这两种操作的 REST 方式是什么?

最佳答案

Django REST Framework 默认情况下不支持批量对象创建,但有一些软件包添加了对其的支持,例如 Django REST Framework Bulk .

可以做成work with routers稍作修改。这应该可以让您做您正在寻找的事情。

because of that I lose the serializer validation for other purposes like field validations.

这是因为您没有传递序列化器上下文,而通用 View 会自动传递序列化器上下文。

关于python - 将对象或对象数组发布到 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com