不带json的django api post还能工作吗?
因为django rest框架不支持批量创建不带json的django api post还能工作吗?,django,django-rest-framework,Django,Django Rest Framework,因为django rest框架不支持批量创建 所以我写了一个 我发现了一个奇怪的问题 如果我POSTapi带有json类似: [{'address':'1','name':'2','start':'3'}, {'address':'10','name':'20','start':'30'}] 它起作用了 但是如果我在没有带json的情况下发布api 我仍然收到批量创建成功消息。 为什么会发生这种情况?? 我在哪里写错了 这是我的API视图 class BulkTestList(APIView)
所以我写了一个
我发现了一个奇怪的问题
如果我
POST
api带有json
类似:
[{'address':'1','name':'2','start':'3'},
{'address':'10','name':'20','start':'30'}]
它起作用了但是如果我在没有带json的情况下发布api 我仍然收到
批量创建成功
消息。为什么会发生这种情况??
我在哪里写错了 这是我的API视图
class BulkTestList(APIView):
def post(self, request, format=None):
duplicateList = []
for data in request.data:
message = {}
if not 'address' in data.keys():
message['address'] = [ "This field is required."]
elif not data['address']:
message["address"] = [ "This field may not be blank."]
if not 'name' in data.keys():
message["name"] = [ "This field is required."]
elif not data['name']:
message["name"]= [ "This field may not be blank."]
if not 'star' in data.keys():
message["star"] = [ "This field is required."]
elif not data['star']:
message["star"]= [ "This field may not be blank."]
if message:
return Response(message, status=status.HTTP_400_BAD_REQUEST)
for data in request.data:
address = data['address'].upper()
bulkCreateObjects = Data(address=address, name=data['name'], star=data['star'], datetime=datetime.datetime.now(pytz.utc))
bulkCreateObjects.save()
message = {"bulk create success"}
return Response(data=message, status=status.HTTP_201_CREATED)
Django REST框架没有现成的大容量应用程序,但您有一个第三方应用程序 您当前的视图没有调用序列化程序,因此在任何时候都无法获得验证。看
请注意,对于批量,您将向序列化程序添加一个many=True,以便它能够处理数据列表。视图返回201“{bulk create success}”的问题是由于您对请求进行迭代。data不会检查reuqest.data是否实际为空。空列表上的for循环将跳过for块。正如Linovia提到的,您需要为视图添加一些验证