2016-03-06 36 views
0

我使用Django 1.8和我的一些代碼,我只是做:Django的核心:<django.utils.functional .__ proxy__的對象....>不是JSON序列化

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的JSON序列.signing只能序列化基本數據類型「。

除非我錯了,否則由字符串組成的數組是基本的數據類型。此外,代碼已經有6個月沒有問題了。

我錯過了什麼?

+0

'_'是什麼? 'ugettext'或'ugettext_lazy'? – vsd

回答

4

看起來你試圖序列化的不是字符串 - 它們是lazy translation objects(即標記爲翻譯的字符串,尚未評估過)。

很可能是在同一個文件中類似這樣的一行:

from django.utils.translation import ugettext_lazy as _ 

使用翻譯功能,是不是偷懶(即它返回翻譯的字符串,而不是懶惰的翻譯對象),你應該改變它:

from django.utils.translation import ugettext as _ 

或者您可以強制懶翻譯對象的評價,呼籲他們unicode()連載他們面前。

+0

非常感謝您在我看到您的答案時發現錯誤! –

+1

沒問題。順便說一句,你看過[Django的內置消息框架](https://docs.djangoproject.com/en/1.9/ref/contrib/messages/)嗎?看來你正在做一些非常相似的事情。 –

+0

Omg ... Django:包括電池。我是2年前的Php專家,你必須親自動手做所有事情。這就是爲什麼我盡我所能來解釋爲什麼學生應該逃離Php ...而我在Django那樣手工做了很多事情,發現一段時間之後,所有內容都被嵌入... –

相關問題