Django 消息框架中的 Unicode
我在 Django 中有一条 Flash 消息,它是使用成员资格模型中的标准 char 字段构建的。
messages.add_message(request,
messages.INFO,
'{0} membership created'.format(membership.name))
这工作得很好,除非 memberships.name
包含 unicode 字符,在这种情况下我会收到 UnicodeEncodeError
。我可以通过在字符串前面添加 u
来创建 unicode 字符串来解决此问题,但我不明白为什么这是必要的,因为 docs 声明 Django 假定所有字节串均采用 UTF-8 格式。我应该检查我的应用程序并将所有字符串更改为 unicode 字符串吗?
I have a flash message in Django that is built using a standard char field from a memberships model.
messages.add_message(request,
messages.INFO,
'{0} membership created'.format(membership.name))
This works just fine unless memberships.name
contains unicode characters in which case I get a UnicodeEncodeError
. I can fix this by prepending the string with u
to create a unicode string but I don't understand why this is necessary as the docs state that Django assumes all bytestrings are in UTF-8. Should I be going through my app and changing all strings to unicode strings?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这对于 Django 来说并不是真正的问题。看来您在
str.format
处理 unicode 参数的方式中遇到了错误,Python 问题 7300一种解决方法是使用 unicode 字符串,另一种方法是使用
%
格式。This isn't really an issue with Django. It looks like you're being caught out by a bug in the way
str.format
handles unicode arguments, Python Issue 7300One workaround is to use a unicode string, another is to use
%
formatting.是的。
那些实际上是字节字符串的除外,因为它们是从文件等中读取的。
Yes.
Except those that are actually byte-strings because they were read from a file or so.