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

Oli*_*ons 0 django serialization json

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

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

然后当页面刷新时我有这个问题:

<django.utils.functional.__proxy__ object at 0x04805F70> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

当然我已经google了,我已经阅读了文档,其中说"JSON仅支持字符串键"和"来自django.core.signing的JSON序列化程序只能序列化基本数据类型".

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

我错过了什么?

Lud*_*mer 5

看起来你试图序列化的不是字符串 - 它们是懒惰的翻译对象(即标记为翻译的字符串,尚未评估).

很可能在同一个文件中有一行类似于这一行:

from django.utils.translation import ugettext_lazy as _
Run Code Online (Sandbox Code Playgroud)

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

from django.utils.translation import ugettext as _
Run Code Online (Sandbox Code Playgroud)

或者,您可以强制评估延迟转换对象,然后通过调用unicode()它们进行序列化.