我正在尝试为我的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框架序列化程序:
我的自定义json事情:
我的自定义json与"对象"关键补充:
他们奇怪的不同 - 我希望我的也被认为是API响应。
解决方案:如果其他人感兴趣,你可以做的只是不是json转储对象。回来:
return Response(response_dict)
那很简单。这将返回一个适合解析的对象。
答案 0 :(得分:2)
也许你应该试试这个:
json_data = json.dumps(dict(object=response_dict))