Django REST错误返回对象列表

时间:2015-06-07 12:39:55

标签: python django rest django-rest-framework

我正在使用Django REST框架来实现Android游戏的游戏服务器。我编写了一个类,它派生自GenericAPIView来处理特定的Http Post请求。我希望请求返回一些以前从数据库中查询过的对象列表。

我的代码如下所示:

class NewGameView(GenericAPIView):
    serializer_class=NewGameRequestSerializer
    def post(self, request, format=None):
        serializer = NewGameRequestSerializer(data=request.DATA)
        if serializer.is_valid():
            req=serializer.save()

            mygamedata=...; # request game data objects

            serializer = MyGameDataSerializer(mygamedata, many=True)
            return Response(serializer.data,status=status.HTTP_201_CREATED)
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST)

当我通过curl访问此视图时,一切都按预期工作。但是,当我提交使用Django生成的"可浏览的api"表格,我收到了 'ListSerializer' object is not iterable "模板渲染期间的错误"。如果我从APIView派生我的类,则不会发生错误,但Django将不再显示表单(无论出于何种原因)。

有谁可以解释发生了什么?

由于

1 个答案:

答案 0 :(得分:1)

您只需返回包含所需数据的字典即可。

class NewGameView(GenericAPIView):
serializer_class=NewGameRequestSerializer
def post(self, request, format=None):
    serializer = NewGameRequestSerializer(data=request.DATA)
    if serializer.is_valid():
        req=serializer.save()

        mygamedata=...; # request game data objects

        data = {'game_name': mygame_object.name}
        return Response(data,status=status.HTTP_201_CREATED)