2010-05-17 72 views
2

我收到以下錯誤:Django的反序列化

Traceback (most recent call last):
File "../tests.py", line 92, in test_single_search

for return_obj in serializers.deserialize("json",response, ensure_ascii=False):
File "/Library/Python/2.6/site-packages/django/core/serializers/json.py", line 38, in Deserializer for obj in PythonDeserializer(simplejson.load(stream), **options): File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/init.py", line 264, in load return loads(fp.read(), AttributeError: 'HttpResponse' object has no attribute 'read'

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

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

然而,當我嘗試處理結果在測試我的調用方法.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 serializser。

回答

8

您需要在撥打deserialize時使用response.content而不是response。響應對象是HttpResponse的實例,但具有content的屬性,其中包含實際的JSON。

+0

是的,嘗試'serializers.deserialize(「json」,response.content,ensure_ascii = False)'如Daniel建議 – 2010-05-17 21:14:38

+0

謝謝,使用response.content解決了這個問題。更新的Django版本使用'''json'''的 – herbyme 2010-05-18 05:24:12

+0

。所以它會是'''''json.loads(response.content)''' – serguitus 2017-03-22 01:02:19