python gettext 错误 : Can't convert '__proxy__' object to str implicitly

标签 python django gettext

我突然在之前运行的代码中遇到了一个奇怪的错误。我最近从 1.9.4 升级到 Django 1.9.6。

在我的一个观点中,我有:

from django.contrib import messages
from django.utils.translation import ugettext_lazy as _

messages.success(request, str( _('A string with a ') +
    '<a target="_blank" href="/preview/' + mymodel.hash + '">' +
    _('link!') + '</a>.'), extra_tags="safehtml"
    )

这现在在倒数第二行给出了一个TypeError:

Can't convert '__proxy__' object to str implicitly

为什么?我该如何解决这个问题?

编辑:

这可以通过将对 ugettext_lazy() 的第二次调用包装在 str() 中来解决(即代码变为 str( _('link!' ) )。这样做可以让 View 呈现得很好。因此我现在的问题是:为什么?整个复合字符串已经包含在 str() 中,正如我所说,这段代码在以前版本的 django 上运行良好。这是一个错误吗?

最佳答案

__proxy__ 是翻译字符串,其实际翻译结果只有在字符串中使用该对象后才能确定(即,当您使用 ugettext_lazy 而不是 时会发生什么ugettext 这里)。

Documentation

关于python gettext 错误 : Can't convert '__proxy__' object to str implicitly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37410097/

相关文章:

python - gcc 找不到 Python.h

python - 如何在sqlite 3中将数据添加到表中而不换行

python - NameError : global name 'WTI' is not defined

python - 我不明白为什么我会收到 unboundLocalError

c - C 中的替代 gettext 库?

python - Django 国际化 : is there a gettext alternative?

python - 找不到 msguniq。确保安装了 GNU gettext 工具 0.15 或更新版本。 (Django 1.8 和 OSX ElCapitan)

python - 将结果从 python 写入 csv 文件 [UnicodeEncodeError : 'charmap' codec can't encode character

javascript - 如何使用ajax将 Canvas 数据从javascript发送到django

具有外键创建的 Django 模型对象