Django json序列化不会返回对象

时间:2015-06-30 05:28:52

标签: python django rest serialization

我正在尝试为我的Django REST API编写一个API视图,该视图将一个Location对象和序列化器用于手动" - 使用json.dumps。这是一个例子:

class LocationDetail(APIView):
    def get(self, request, location_id, format=None):
        l = Location.objects.get(id=location_id)
        response_dict = {
            "id": l.id,
            "name" : l.name,
        }
        json_data = json.dumps(response_dict)
        return Response(json_data)

这将不出所料地返回一个json对象,例如:

{"name": "Some Place", "id" : 1, ...}

根据https://www.hurl.it/,这不会返回正确的API响应。

但是我需要API来返回一个Object。这是我使用内置REST Framework的Serializer类的版本:

serialized_location = LocationSerializer(l)
return Response(serialized_location.data)

这会使"正确的"响应,并且不会在hurl.it中出错:

Object {id: 1, name: "Some Place", …}

我想弄清楚如何模拟REST序列化程序的行为 - 如何让它返回json的对象而不仅仅是json?

以下是图片的区别,一个显然是正确的,另一个看起来不像API响应:

REST框架序列化程序:

enter image description here

我的自定义json事情:

enter image description here

我的自定义json与"对象"关键补充:

enter image description here

他们奇怪的不同 - 我希望我的也被认为是API响应。

解决方案:如果其他人感兴趣,你可以做的只是不是json转储对象。回来:

return Response(response_dict)
那很简单。这将返回一个适合解析的对象。

1 个答案:

答案 0 :(得分:2)

也许你应该试试这个:

json_data = json.dumps(dict(object=response_dict))