エラー リスト項目の 1 つが Unicode の場合、Django の ErrorList のレンダリングに問題があります。Django がエラーリストをレンダリングするとき
{{ form.non_field_errors }}
class ErrorList(list, StrAndUnicode):
"""
A collection of errors that knows how to display itself in various formats.
"""
def __unicode__(self):
return self.as_ul()
def as_ul(self):
if not self: return u''
return mark_safe(u'<ul class="errorlist">%s</ul>'
% ''.join([u'<li>%s</li>' % conditional_escape(force_unicode(e)) for e in self]))
s = unicode(str(s), encoding, errors)
そして翻訳lazy
:
def __str_cast(self):
return str(self.__func(*self.__args, **self.__kw))
str(u'å')
問題は、私の文字列に「 å 」記号が含まれており、UnicodeEncodeError
. を使用しない正当な理由はありforce_unicode
ますか? 私はそれを自分で行い、エラーメッセージをユニコードではなくオブジェクトとして提供して機能させる必要があります。lazy
smart_str
str
したがって、レンダリング中に TemplateSyntaxError Caught UnicodeEncodeError が発生します: 'ascii' codec can't encode character u'\xe5' in position 17: ordinal not in range(128)。これは、エラー リスト アイテム (これはu'å'
) をレンダリングすると、最初の UnicodeEncodeError が発生し、Unicode メッセージ'ascii' コーデックは文字 u'\xe5'をエンコードできず、次に最初のメッセージのレンダリング中に 2 番目の UnicodeEncodeError が発生したことを示しているようです。私は間違っていますか?
Django バージョン: 1.3.1 (ただし、これは 1.4 でも発生するようです)
完全なトレースバック: https://raw.github.com/gist/2499077/ba60cb752acdb429dd6c2814ffb24272037a367a/UnicodeEncodeError.txt