返回对象列表的 Django REST 错误
Django REST error returning a list of objects
我正在使用 Django REST 框架来实现 android 游戏的游戏服务器。我写了一个 class,它是从 GenericAPIView 派生的,用于处理特定的 Http Post 请求。我希望请求 return 一些对象的列表,这些对象以前从数据库中查询过。
我的代码如下所示:
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
"template rendering" 期间出错。如果我改为从 APIView 派生 class,则不会发生错误,但 Django 将不再显示表单(无论出于何种原因)。
谁能解释一下这是怎么回事?
谢谢
您可以 return 一本包含您需要的数据的字典。
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)
我正在使用 Django REST 框架来实现 android 游戏的游戏服务器。我写了一个 class,它是从 GenericAPIView 派生的,用于处理特定的 Http Post 请求。我希望请求 return 一些对象的列表,这些对象以前从数据库中查询过。
我的代码如下所示:
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
"template rendering" 期间出错。如果我改为从 APIView 派生 class,则不会发生错误,但 Django 将不再显示表单(无论出于何种原因)。
谁能解释一下这是怎么回事?
谢谢
您可以 return 一本包含您需要的数据的字典。
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)