为什么在Django示例教程中我会遇到Python缩进错误?

5

我有一段代码来自于Django官方教程的示例教程

from django.db import models
from datetime import datetime

# Create your models here.

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_today(self):
        return self.pub_date.date() == datetime.date.today()  

我遇到了这个错误:IndentationError: unexpected indent

在这一行:

def __unicode__(self):

有什么想法是错的吗?
4个回答

12

我唯一的猜测是您把制表符和空格混用了。

建议使用空格而不是制表符,每个缩进4个空格。 http://www.python.org/dev/peps/pep-0008/

您的编辑器上是否可见有不可见字符,以确保不是这种情况?

PS:您的声望图表显示为-6000,这真的让我很困扰。


3

可能是因为您从教程中复制/粘贴了内容。请特别注意制表符和空格。

希望能对您有所帮助。


谢谢 - 这对我很有帮助。不要从教程中复制粘贴! - Tomba

1
有时候在处理大文件时,要找到错误的位置可能会很困难,因此您可以安装 pep8 http://pypi.python.org/pypi/pep8 模块,并从命令行中使用它。
$ pep8 a.py 
a.py:1:4: W191 缩进包含制表符
a.py:1:4: E101 缩进包含混合空格和制表符
a.py:1:5: E113 意外缩进

你为什么认为你的回答会对他有帮助呢?他已经知道出了什么问题,哪一行出了错。 - Hunsu

0

Python缩进大部分时间都会起到重要作用,为了正确工作,请使用编辑器或将_unicode_(self)与制表符分开。

      def __unicode__(self):  # Python 3: def __str__(self):
            return str(self.name)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接