Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带json的django api post还能工作吗?_Django_Django Rest Framework - Fatal编程技术网

不带json的django api post还能工作吗?

不带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)

因为django rest框架不支持批量创建
所以我写了一个
我发现了一个奇怪的问题
如果我
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提到的,您需要为视图添加一些验证