2011-08-24 86 views
0

我通過他們的網站上的教程學習Django,我遇到了一個奇怪的問題。在這個step當我到達的部分,我進入的Unicode代碼片段,這樣Python和Unicode

>>> Poll.objects.all() 

將返回不在此

[<Poll: Poll object>] 

,但這樣的事情

[<Poll: What's up?>] 

由於某種原因,代碼只適用於我複製和粘貼時,而不是當我輸入時。任何想法,爲什麼發生這種情況?

::

所以在這裏是不會在評論中格式化代碼:

from django.db import models 

import datetime 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 
    def was_published_today(self): 
     return self.pub_date.date() ==datetime.date.today() 
    def __unicode__(self): 
    return self.question 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 
    def __unicode__(self): 
     return self.choice 
+0

縮進可能是錯誤的。告訴我們你輸入的內容。 –

+0

你能發佈你的投票模型代碼嗎? – mwan

+1

你可以使用__unicode __(個體經營)方法 – timger

回答

1

必須由混合選項卡/空間縮進引起...

您的代碼粘貼在評論中被搞砸了,但我看了一下HTML源代碼,發現你輸入的行(特別是__unicode__方法)使用混合標籤/空格縮進。也許你使用的編輯器將「製表符寬度」配置爲4,以使製表符縮進級別看起來與4個空格相同。然而,Python解釋器認爲一個相當於8個空格的標籤(兩個縮進級別)。所以你輸入的行(或帶有製表符的行)被錯誤地縮進。

在這裏,我標誌着在你的代碼中所有的標籤,用「<T>

from django.db import models 

import datetime 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 
    def was_published_today(self): 
    <T> return self.pub_date.date() ==datetime.date.today() 
<T> def __unicode__(self): 
<T> <T> return self.question 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 
    def __unicode__(self): 
<T> <T> return self.choice 

不要混合使用製表符和空格,任何語言。在Python中,我們總是使用4個空格按照PEP-8的建議縮進。

無論您使用哪種編輯器,Google都會將其配置爲自動將標籤擴展爲4個空格。

+0

謝謝,這非常有幫助。如果這有所作爲,我會將代碼粘貼到問題中。 – captDaylight

1

如果您使用TextMate,請選中軟標籤:4並使用Cleanup WhiteSpaces命令。它遇到了4次遇到!