我正在尝试使用此代码:
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
但是我在  def unicode '中收到了意外的缩进错误然而,对我来说,这看起来是正确的。有人知道为什么吗?
答案 0 :(得分:2)
您正在混合不同行上的制表符和空格,这会导致此问题。仅使用空格(并关闭编辑器中的选项卡)。
具体来说,您的pub_date
行似乎缩进了4个空格,但def __unicode__
行缩进了一个标签。 Python不知道您的选项卡值在编辑器中设置了什么,因此它假设选项卡表示8个空格缩进。避免这种情况的最简单(和推荐)方法是仅使用空格。
来自PEP 8:
标签或空格?
空格是首选的缩进方法。
选项卡应仅用于与已使用选项卡缩进的代码保持一致。
Python 3不允许混合使用制表符和空格来缩进。
使用制表符和空格的混合缩进的Python 2代码应该转换为仅使用空格。
当使用-t选项调用Python 2命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告。使用-tt时,这些警告会出错。强烈推荐这些选项!