Python django can';在post上序列化非模型

Python django can';在post上序列化非模型,python,django,django-rest-framework,Python,Django,Django Rest Framework,django新手,正在尝试向服务器发送id列表以更新某些信息。我不想让他们成为模范班,没有必要。我试图做的是将它们放入序列化程序中,以确保它们“干净”。这是我的密码: 视图类: class Update_Cards(APIView): # This seems necessary or it will throw an error queryset = Card.objects.all() def post(self, request, board_id, format=

django新手,正在尝试向服务器发送id列表以更新某些信息。我不想让他们成为模范班,没有必要。我试图做的是将它们放入序列化程序中,以确保它们“干净”。这是我的密码:

视图类:

class Update_Cards(APIView):
    # This seems necessary or it will throw an error
    queryset = Card.objects.all()
    def post(self, request, board_id, format=None):
        print request.DATA
        serializer = CardMoveSerializer(data=request.DATA, many=True)
        #this throws an error
        print serializer.data

        return Response(serializer.data)
序列化程序:

class CardMoveSerializer(serializers.Serializer):
    card_id = serializers.IntegerField()
    lane_id = serializers.IntegerField()
我得到的错误是:

[{u'lane_id': 21, u'card_id': 3}] #this is to show the data is coming across the wire
Internal Server Error: /api/board/2/updateCards
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/Library/Python/2.7/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/views/decorators/csrf.py", line 77, in wrapped_view
    return view_func(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 327, in dispatch
    response = self.handle_exception(exc)
  File "/Library/Python/2.7/site-packages/rest_framework/views.py", line 324, in dispatch
    response = handler(request, *args, **kwargs)
  File "/Users/crob/Documents/workspace/tlckanban/python/rest/views.py", line 37, in post
    print card_moves.data
  File "/Library/Python/2.7/site-packages/rest_framework/serializers.py", line 499, in data
    self._data = [self.to_native(item) for item in obj]
TypeError: 'NoneType' object is not iterable
目前,我所做的是使用simplejson解析器来实现这一点,但我觉得这不是最好的方式:

def update_cards(request, board_id):
    json_data = simplejson.loads(request.body)

    for moveIndex in range(0, len(json_data)):
        #do some work


    return JSONResponse(json_data, status=status.HTTP_200_OK)

提前谢谢你的帮助

似乎您没有使用,但无论如何序列化不是为了验证而进行的。使用验证数据,然后像序列化数据一样使用
json
。Django的序列化程序仅用于查询集和模型。

在访问数据之前,您需要访问“serializer.is\u valid()”。看起来这里缺少了一点API—serializer.data如果在验证之前访问它,可能会引发预期

哪些数据正在传递到视图?您可以包含一些示例吗?看起来您传递了一个应用程序不喜欢的None值。错误消息的第一行是将request.DATA打印到控制台。我正在发送:[{u'lane\u id':21,u'card\u id':3}]这是仅有的两个属性,因此任何内容都不应该是非的我正在使用django rest框架序列化程序:我的代码基于此:谢谢!是的,我没有从文档中得到印象,我需要调用的文档是有效的,我认为仅仅创建实例就可以使它可用。我的错。