【发布时间】:2015-06-07 21:36:45
【问题描述】:
我正在使用 Django REST 框架来为安卓游戏实现游戏服务器。我写了一个类,它派生自 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 生成的“browsable api”表单提交时,我收到了一个
'ListSerializer' object is not iterable
“模板渲染”期间出错。如果我从 APIView 派生我的类,则不会发生错误,但 Django 将不再显示表单(无论出于何种原因)。
谁能解释发生了什么?
谢谢
【问题讨论】:
-
您的代码中没有
ListSerializer变量。你能提供更多的代码吗? -
ListSerializer类不是我写的。它是 Django REST 框架的一部分。我的MyGameDataSerializer派生自serializers.ModelSerializer。我相信通过 many=True 会自动使它以某种方式使用这个 ListSerializer。我不确定确切的内部结构(我对 Django REST 还很陌生)。
标签: python django rest django-rest-framework