Django REST返回对象列表时出错

2024-05-13 19:17:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的代码如下:

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生成的“browsable api”表单提交时,我收到一个 'ListSerializer' object is not iterable “模板呈现”期间出错。如果我改为从apieview派生类,则不会发生错误,但Django将不再显示表单(无论出于什么原因)。在

有人能解释一下发生了什么吗?在

谢谢


Tags: djangohttp游戏表单datareturnisresponse
1条回答
网友
1楼 · 发布于 2024-05-13 19:17:41

你只要把你需要的数据返回一本字典就行了。在

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)

相关问题 更多 >