Django 反序列化

2 投票
1 回答
3726 浏览
提问于 2025-04-15 22:49

我遇到了以下错误:

错误追踪(最近的调用在最前面):
文件 "../tests.py",第 92 行,在 test_single_search 中

for return_obj in serializers.deserialize("json", response, ensure_ascii=False):
文件 "/Library/Python/2.6/site-packages/django/core/serializers/json.py",第 38 行,在 Deserializer 中 for obj in PythonDeserializer(simplejson.load(stream),
**options): 文件 "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py",第 264 行,在 load 中 return loads(fp.read(), AttributeError: 'HttpResponse' 对象没有 'read' 属性

在 views.py 中,序列化工作正常:

resultsjson = serializers.serialize("json", results, ensure_ascii=False)
return HttpResponse(resultsjson, mimetype = 'application/json')

但是,当我在 test.py 中调用方法处理结果时:

response = self.client.get("/path/?query=testValue")
for return_obj in serializers.deserialize("json", response, ensure_ascii=False):
      print return_obj

我就遇到了上面的错误。有没有人遇到过同样的错误。我正在使用 Django 1.2(从 svn 获取的最新版本),看起来它使用的是内置的 simplejson 序列化器。

1 个回答

9

你在调用 deserialize 时,需要使用 response.content,而不是直接用 response。这里的 response 是一个 HttpResponse 的实例,但它有一个叫 content 的属性,这个属性里实际上包含了你需要的 JSON 数据。

撰写回答