2013-07-13 23 views
5

döndürmeye çalışırken garip bir sorun yaşıyorum. Bir boole döndüren bir yöntem var. Buna karşılık, ön uçtan doğrudan yöntemi arayamadığım için bu işlevin sonucunun tekrar döndürülmesine ihtiyacım var. Bu bir istisna atarTypeError ("'bool' nesnesi yinelenemez",) bir Boolean

# this uses bottle py framework and should return a value to the html front-end 
@get('/create/additive/<name>') 
def createAdditive(name): 
    return pump.createAdditive(name) 



def createAdditive(self, name): 
     additiveInsertQuery = """ INSERT INTO additives 
            SET   name = '""" + name + """'""" 
     try: 
      self.cursor.execute(additiveInsertQuery) 
      self.db.commit() 
      return True 
     except: 
      self.db.rollback() 
      return False 

: İşte benim kod ben denemeden değilim çünkü ben bu hatayı alamadım

(" 'bool' nesne iterable değil") TypeError "yinelemeyi "boole değeri, sadece geri döndürmek için.

Boole veya int yerine bir dize döndürürüm, beklendiği gibi çalışır. Burada bir sorun ne olabilir?

traceback: traceback de

Traceback (most recent call last): 
    File "C:\Python33\lib\site-packages\bottle.py", line 821, in _cast 
    out = iter(out) 
TypeError: 'bool' object is not iterable 
+2

Tüm geri bildirim gönderin. – zhangyangyu

+0

Tam iz için düzenleme konusuna bakın. – DominicM

cevap

8

Görünüş:

Traceback (most recent call last): 
    File "C:\Python33\lib\site-packages\bottle.py", line 821, in _cast 
    out = iter(out) 
TypeError: 'bool' object is not iterable 

Kişisel kod değerini yineleme değil, kod öyle aldıktan.

Çözüm: yinelenebilir bir döndürme. Boole'u bir dizgiye dönüştürmenizi (str(False)) veya bir tuple ((False,)) dahil etmenizi öneririz.

Her zaman geri izleme oku: doğru ve yararlı.

+0

Dize yöntemi işe yaradı, ancak ön uçta boole olmayan ipi kontrol etmem gerektiğinden çok sinir bozucu. Tulepe çalışmadı, bu doğru sözdizimi mi? [[[dönüş ((Yanlış,))]]]? Ayrıca, yinelenen veri türleri gerektirmesi için yönlendirmeli çerçeveler için yaygın mıdır? Eğer sadece bir şişe pili ise web pasajına geçersem ... – DominicM

+1

@DominicM Hayır, bir listeye (veya aslında üç listeye) bir ifade koyamazsınız. Bence bu genel bir tasarım. Verileri bir XmlHTTPRequest'e iletmeye çalışıyorsanız, AJAX'ı (ajax modülünü kullanın) döndürmenizi ve istemci tarafında bir ajax ayrıştırma kitaplığı kullanmanızı öneririm. – Marcin

+0

Sanırım basitçe geri dönüp sonra yanlış/yanlış yankılayabilmek için kullanıyorum. Ajax ayrıştırma kütüphanesi ile ne demek istiyorsun? Şu anda javascript/jquery $ .ajax çağrısı kullanıyorum. – DominicM