Python,Django:ValueError:索引3处不支持的格式字符'('(0x28)

时间:2013-10-18 11:20:32

标签: python django translation string-formatting

有人可以向我解释为什么会引发ValueError吗? (使用Python 2.7)

from django.utils.translation import ugettext as _

...

template = _('► %(user)s, random text here @[%(friend_id)s] more random text ◄◄◄'.decode('utf-8')) % {'user': friend_profile.user.first_name, 'friend_id': user.id}

这是错误(由芹菜错误电子邮件发送):

  File "/var/www/myapp/apps/app/tasks.py", line 54, in notify_friends_new_invite
    template=_('��� %(user)s, random text here @[%(friend_id)s] more random text ���������'.decode('utf-8')) % {'user': friend_profile.user.first_name, 'friend_id': user.id},
ValueError: unsupported format character '(' (0x28) at index 3

1 个答案:

答案 0 :(得分:2)

检查邮件目录条目。

_(...)调用将您的unicode值替换为消息目录中的一个(如果可用),并且消息会抛出此异常。交换%和前面的空格可以做到这一点,例如:

>>> '►% (user)s, random text here @[%(friend_id)s] more random text ◄◄◄'.decode('utf-8') % {'user':u'foo', 'friend_id': u'bar'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: unsupported format character '(' (0x28) at index 3