在安装了 Django 的开发源代码以及来自源代码的 PostgreSQL 以及来自源代码的所有其他需要的东西后,我正在学习 Django 教程。我正在尝试在 Ubuntu 12.10 上使用 python3 而不是 python 来做所有事情。
一切似乎都很顺利,直到我到达教程中我们应该重新定义的部分 __unicode__()
为了在我们从表中请求 objects.all() 时返回合理的结果。它根本不起作用。我决定试试 __str__()
,它奏效了!
但是,教程解释了我们不应该重新定义 __str__()
.那么,我安装的 __unicode__()
有什么问题? __str__()
时不起作用做?教程中的其他方法工作正常。
最佳答案
字符串在 Python 3 和 2 中的处理方式不同。
2、__str__()
返回字节,而 __unicode__()
返回的字符。 3、__str__()
现在返回字符,因为字符串现在是原生的 unicode,并且 __unicode__()
不存在。如果您真的需要 __str__()
的旧 2 行为,相信现在是__bytes__()
.
简短的回答,坚持 __str__()
如果您使用的是 Python 3,并且意识到 Django 教程明确声明它们是为 2.x 编写的,那么就会存在差异。
关于django - `__unicode__()` 添加在 Django 教程中的基本轮询应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13357251/