1

これが 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
4

1 に答える 1

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
于 2013-10-18T11:39:22.067 に答える