2012-11-13 45 views
6

從源代碼安裝了Django的開發源代碼以及PostgreSQL後,我正在通過Django教程開展工作。我試圖用python3而不是python在Ubuntu 12.10上做所有事情。`__unicode __()`另外在Django中的基本輪詢應用程序中不工作

一切似乎都進展順利,直到我找到了教程中的部分,我們應該重新定義__unicode__(),以便在從表中請求objects.all()時返回合理的結果。它根本不工作。我決定嘗試__str__(),它工作!

但是,本教程解釋了我們不應該重新定義__str__()。那麼,我的安裝有什麼問題,__unicode__()不起作用,而__str__()呢?教程中的其他方法正常工作。

+0

您應該知道Django中尚未正式支持Python3。 –

+0

版本1.6將正式支持python3,我正在使用1.6 alpha。 –

回答

8

字符串被在Python 3不同的處理VS 2.

2,__str__()返回的字節,而__unicode__()返回的字符。在3中,__str__()現在返回字符,因爲字符串現在是本地unicode,並且__unicode__()不存在。如果你確實需要__str__()的舊2行爲,我相信現在是__bytes__()

簡短的回答,堅持__str__()如果您使用的是Python 3,並且意識到Django教程明確聲明它們是爲2.x編寫的,所以會有差異。

+1

謝謝!我認爲這可能是更多的,因爲一年前人們遇到同樣的問題,沒有人正確回答他們的問題(這是谷歌組的django用戶)。如果該教程爲python3差異添加了評論,那會很好。 –

相關問題