2012-11-13 11 views
6

में मूल सर्वेक्षण अनुप्रयोग में काम नहीं कर रहा है, मैं Django के विकास स्रोत को स्रोत से पोस्टग्रेएसक्यूएल के साथ और स्रोत से आवश्यक सभी चीज़ों के साथ Django के विकास स्रोत को स्थापित करने के बाद Django ट्यूटोरियल के माध्यम से काम कर रहा हूं। मैं उबंटू 12.10 पर अजगर के बजाय पायथन 3 के साथ सबकुछ करने की कोशिश कर रहा हूं।`__unicode __()` Django ट्यूटोरियल

जब तक मैं ट्यूटोरियल में भाग नहीं लेता तब तक सबकुछ ठीक से चल रहा था, जहां हमें एक तालिका से ऑब्जेक्ट्स (all() के लिए पूछते समय एक समझदार परिणाम लौटने के लिए __unicode__() को फिर से परिभाषित करना होता है। यह बिल्कुल काम नहीं कर रहा है। मैंने __str__() को आजमाने का फैसला किया, और यह काम किया!

लेकिन, ट्यूटोरियल बताता है कि हमें __str__() को फिर से परिभाषित नहीं किया जाना चाहिए। तो, मेरे इंस्टॉल के साथ क्या गलत है कि __unicode__() काम नहीं करता है जबकि __str__() करता है? ट्यूटोरियल से अन्य विधियां ठीक काम करती हैं।

+0

आपको पता होना चाहिए कि Python3 अभी तक आधिकारिक तौर पर Django में समर्थित नहीं है। –

+0

संस्करण 1.6 आधिकारिक तौर पर python3 का समर्थन करेगा और मैं 1.6 अल्फा का उपयोग कर रहा हूं। –

उत्तर

8

स्ट्रिंग्स 2 में बनाम 2.

अजगर 3 में अलग तरह से नियंत्रित किया जाता है, __str__() लौटे बाइट्स, जबकि __unicode__() लौटे अक्षर। 3, __str__() अब वर्ण लौटाता है, क्योंकि तार अब मूल रूप से यूनिकोड हैं, और __unicode__() मौजूद नहीं है। यदि आपको वास्तव में __str__() के लिए पुराने 2 व्यवहार की आवश्यकता है, तो मुझे विश्वास है कि यह अब __bytes__() है।

संक्षिप्त उत्तर, __str__() के साथ चिपकाएं यदि आप पाइथन 3 का उपयोग कर रहे हैं, और महसूस करें कि Django ट्यूटोरियल स्पष्ट रूप से बताते हैं कि वे 2.x के लिए लिखे गए हैं, इसलिए अंतर होंगे।

+1

धन्यवाद! मैंने सोचा कि यह कुछ और हो सकता है क्योंकि एक साल पहले लोगों को एक ही समस्या थी और किसी ने भी उनके प्रश्न का सही उत्तर नहीं दिया (यह django उपयोगकर्ताओं के लिए Google समूह पर था)। अच्छा होगा अगर ट्यूटोरियल ने Python3 मतभेदों के लिए टिप्पणी जोड़ा। –

संबंधित मुद्दे