/ / Django Messages FrameworkのUnicode-django、unicode

DjangoメッセージフレームワークのUnicode - django、unicode

Djangoには、メンバーシップモデルの標準のcharフィールドを使用して作成されたフラッシュメッセージがあります。

messages.add_message(request,
messages.INFO,
"{0} membership created".format(membership.name))

これはうまくいかない限り memberships.name ユニコード文字が含まれている場合、私は UnicodeEncodeError。これを修正するには、文字列の先頭に u ユニコード文字列を作成しますが、なぜこれが必要なのか理解できません ドキュメント Djangoはすべてのバイト文字列がutf-8にあると想定していると述べています。アプリを調べて、すべての文字列をUnicode文字列に変更する必要がありますか?

回答:

回答№1は1

これは、実際にはDjangoの問題ではありません。 str.format Unicode引数を処理します。 Python Issue 7300

1つの回避策は、Unicode文字列を使用することです。 % フォーマット。

"%s membership created" % membership.name
u"{0} membership created".format(membership.name))

回答№2の場合は0

はい。 ファイルから読み取られたために実際にバイト文字列であるものを除きます。