4
我试图实现一个RESTful Web服务。 一切都很顺利,直到我试图从一个post请求反序列化对象列表。我的代码是这样的:Django在rest框架中列出反序列化
#serializers.py
class ResultSerializer(serializers.ModelSerializer):
class Meta:
model=test_result
fields=('id', 'label')
#views.py
class results(APIView):
"""
Post the results for a test set.
"""
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, pk, format=None):
ser=ResultSerializer(data=request.DATA)
for i in range(len(ser.data)):
if ser.data[i].is_valid():
entry=test_result(user=User.objects.get(username=request.user.username), test_id=Detail.objects.get(test_id=pk), id=Article.objects.get(id=ser.data[i]['id']), label=ser.data[i]['label'])
entry.save() #I use a test_result table in my database to save things
return Response(ser.data[i], status=status.HTTP_201_CREATED)
return Response(ser.errors, status=status.HTTP_400_BAD_REQUEST)
curl命令我用它来测试:
curl -v -H "Accept: application/json" -H "Content-type: application/json" --user plao:1234 -X POST -d '[{"id":23401853, "label":1504}, {"id":23401853, "label":1505}]' http://127.0.0.1:8000/tests/uploadResults/1/
我已经测试我的代码(没有索引)用简单的岗位上工作得很好。但是当我尝试发布一个列表时,我不能。 然而,在shell试图代码后(python manage.py shell
)我注意到,有在该框架的代码TODO:
# TODO: error data when deserializing lists
是否存在与代码中的问题?有什么建议可以使用吗?在最终版本的用户将发布字符串类似下面的一个,但我尽量去实现它一步一步:
{"documents": [{"id":[Label1,...,LabelN]},....,{"id":[Label1,..,LabelM]}]}
如果我能处理列表我就能hanble那种JSON的。
谢谢。我从头开始写了一个视图,解决了我的问题。也许以后我会试着找出一个解决方案。然而,与框架良好的合作! – geompalik 2013-02-26 11:04:29