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