2011-02-05 13 views
5

tengo este código a partir de t he django sample tutorial¿Por qué recibo un error de pitón guión aquí en el tutorial muestra de 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() 

y que estoy recibiendo este error: IndentationError: guión inesperado

en este línea:

def __unicode__(self): 

cualquier idea ¿Qué pasa?

Respuesta

12

Mi única conjetura es que tiene pestañas mezcladas con espacios.

Se recomienda utilizar espacios sobre pestañas, con 4 espacios por indentación. http://www.python.org/dev/peps/pep-0008/

¿Tiene caracteres invisibles visibles en su editor para asegurarse de que no es el caso?

PD: su gráfico de reputación dice -6000 y me está realmente molestando.

1

A veces puede ser un trabajo duro con archivos de gran tamaño para encontrar dónde está el error, por lo que puede instalar PEP8 http://pypi.python.org/pypi/pep8 módulo y usarlo desde la línea de comandos

 
$ 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

por qué cree que su respuesta le ayudaría? Él ya sabe qué es un error y qué línea. – Hunsu

3

Probablemente esto se debe a que hizo copiar/pegar desde el tutorial Preste especial atención a las pestañas y espacios.

Espero que ayude.

+0

gracias - esto me ayudó. no copiar y pegar desde el tutorial! – Tomba

0

Python sangría será responsable la mayor parte del tiempo, para trabajar correclty, utilice el editor o separar el _ Unicode _ (auto) con pestaña

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

solo tuve este problema hoy en día y se fija usando 3 cosas:

  1. salida de la terminal/cmd

  2. Vuelva a escribir el código y guardar

  3. Ejecutar cmd nuevo terminal de/y vuelva a ejecutar el comando "de ejecución del servidor"

Cuestiones relacionadas