【问题标题】:Django DeserializationDjango反序列化
【发布时间】:2011-02-20 14:36:21
【问题描述】:

我收到以下错误:

回溯(最近一次通话最后一次):
文件“../tests.py”,第 92 行,在 test_single_search

对于 serializers.deserialize("json",response, ensure_ascii=False) 中的 return_obj:
文件“/Library/Python/2.6/site-packages/django/core/serializers/json.py”, 第 38 行,在反序列化器中 对于 PythonDeserializer 中的 obj(simplejson.load(stream), **选项):文件“/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/init.py”, 第 264 行,加载中 返回负载(fp.read(),AttributeError:'HttpResponse'对象 没有“读取”属性

在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 序列化器。

【问题讨论】:

    标签: python django serialization


    【解决方案1】:

    在调用deserialize 时,您需要使用response.content 而不仅仅是response。响应对象是 HttpResponse 的一个实例,但有一个 content 属性,在这种情况下包含实际的 JSON。

    【讨论】:

    • 是的,按照 Daniel 的建议试试 serializers.deserialize("json", response.content, ensure_ascii=False)
    • 对于较新的 Django 版本,请使用 json。所以应该是json.loads(response.content)
    猜你喜欢
    • 2011-06-30
    • 1970-01-01
    • 2014-08-08
    • 2016-05-23
    • 2012-03-25
    • 2011-09-17
    • 2020-03-24
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多