6

ソースから PostgreSQL と一緒に Django の開発ソースをインストールし、ソースから必要なその他すべてのものをインストールした後、Django チュートリアルに取り組んでいます。Ubuntu 12.10でpythonの代わりにpython3ですべてをやろうとしています。

__unicode__()テーブルから objects.all() を要求したときに適切な結果を返すために再定義する必要があるチュートリアルの部分に到達するまで、すべてが順調に進んでいるように見えました。まったく機能していません。試してみることにしましたが__str__()、うまくいきました!

しかし、チュートリアルでは、 を再定義してはいけないと説明しています__str__()__unicode__()では、動作しているのに動作しないインストールの何が問題なの__str__()ですか? チュートリアルの他の方法は問題なく機能します。

4

1 に答える 1

8

Python 3 と 2 では、文字列の扱いが異なります。

2 では、__str__()バイトが__unicode__()返され、文字が返されました。3 では、__str__()文字列がネイティブに Unicode になり、__unicode__()存在しないため、文字を返すようになりました。の古い 2 の動作が本当に必要な場合は__str__()、今だと思います__bytes__()

短い答え__str__()ですが、Python 3 を使用している場合はそのまま使用してください。Django のチュートリアルでは、2.x 用に記述されていると明示的に記載されているため、違いがあることに注意してください。

于 2012-11-13T08:14:05.197 に答える