python - django:gettext 和强制转换为 unicode

标签 python django unicode gettext

我的 Django 应用程序中有以下代码。

class Status(object):

    def __init__(self, id, desc):
        self.id = id
        self.desc = desc

    def __unicode__(self):
        return self.desc

STATUS = Status(0, _(u"Some text"))

当我尝试显示某些状态(或什至将其强制转换为 unicode)时,我得到:

TypeError: coercing to Unicode: need string or buffer, __proxy__ found

谁能解释一下,我做错了什么?

最佳答案

Django 的 _() 函数可以返回一个 django.utils.functional.__proxy__ 对象,它本身不是 unicode(参见 http://docs.djangoproject.com/en/1.1/ref/unicode/#translated-strings)。 Python 不会递归调用 unicode(),所以你的 Status 对象直接返回 __proxy__ 对象是错误的。您需要使 __unicode__ 方法 return unicode(self.desc)

请注意,这是 Django 特有的; Python 自己的 gettext 不会返回这些代理对象。

关于python - django:gettext 和强制转换为 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133508/

相关文章:

python - 从数组中取出一个范围

python - Pandas groupby 根据列值和组大小份额选择前 N 行

python - Django 单元测试返回退出代码 = 0 表示通过和失败

Django:从过滤器查询中获取第一个对象或创建

python - (Django) 将 POST ID 发送回客户端

xml - 包含 U+001A 的 XML 文档的编码

c++ - 如何通过指针读取 UTF-8 字符?

python - 多变量的线性回归未按预期工作

css - Django:使用正确的 URL 从 S3 提供 CSS,但无法加载

java - 将编码后的字符串转换为java中可读的字符串