Django核心:<django.utils.functional .__ proxy__ object =“”at =“”.... =“”>不是JSON可序列化的

时间:2016-03-06 08:19:21

标签: json django serialization

我正在使用Django 1.8,在我的一些代码中我只是这样做:

self.request.session['message'] = [
    _(u'Tag!'),
    _(u'Abt!'),
    _(u'Click here to hide this message')]

然后当页面刷新时我遇到了这个问题:

<django.utils.functional.__proxy__ object at 0x04805F70> is not JSON serializable

当然我已经用Google搜索了,我已经阅读了documentation,其中说“JSON仅支持字符串键”和“django.core.signing中的JSON序列化程序只能序列化基本数据类型”

除非我错了,否则由字符串组成的数组是基本数据类型。此外,该代码已经存在了6个月没有问题。

我错过了什么?

1 个答案:

答案 0 :(得分:5)

您尝试序列化的内容似乎不是字符串 - 它们是lazy translation objects(即标记为翻译的字符串,尚未进行评估)。

很可能在同一个文件中有一行与此类似:

from django.utils.translation import ugettext_lazy as _

使用非懒惰的翻译函数(即它返回已翻译的字符串而不是延迟翻译对象),您应将其更改为:

from django.utils.translation import ugettext as _

或者,您可以强制评估延迟翻译对象,然后通过调用它们上的unicode()进行序列化。