2011-02-05 13 views
5

ho questo codice da t he django sample tutorialPerché mi appare un errore di pitone trattino qui nel tutorial di esempio 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() 

e sto ottenendo questo errore: IndentationError: inaspettato trattino

su questo riga:

def __unicode__(self): 

qualsiasi idea di cosa non funziona ??

risposta

12

L'unica mia ipotesi è che le schede siano mescolate con gli spazi.

Si consiglia di utilizzare spazi su schede, con 4 spazi per indentazione. http://www.python.org/dev/peps/pep-0008/

Hai caratteri invisibili visibili sul tuo editor per assicurarti che non sia così?

PS: il grafico della reputazione dice -6000 e mi sta davvero disturbando.

1

A volte può essere difficile lavorare con file di grandi dimensioni per trovare dove l'errore è, quindi è possibile installare PEP8 modulo http://pypi.python.org/pypi/pep8 e utilizzarlo da riga di comando

 
$ pep8 a.py 
a.py:1:4: W191 indentation contains tabs 
a.py:1:4: E101 indentation contains mixed spaces and tabs 
a.py:1:5: E113 unexpected indentation 
+0

perché pensate che la vostra risposta lo avrebbe aiutato? Sa già che cos'è l'errore e quale linea. – Hunsu

3

Probabilmente questo è dovuto al fatto che hai fatto copia/incolla da il tutorial. Presta particolare attenzione alle schede e agli spazi.

Spero che aiuti.

+0

grazie - questo mi ha aiutato. non copiare e incollare dal tutorial! – Tomba

0

Python rientro sarà responsabile la maggior parte del tempo, a lavorare correclty, utilizzare l'editor o separare il _ unicode _ (auto) con scheda

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

Ho appena avuto questo problema oggi e fissato utilizzando 3 cose:

  1. Exit terminale/cmd

  2. riscrivere il codice e salvare

  3. Run nuovo cmd terminale/ed eseguire nuovamente il comando "runserver"

Problemi correlati