2014-12-22 27 views
12

Bağlı aygıtların listesini flask kullanarak tarayıcıda göstermeye çalışıyorum. server.py içinde"TypeError": 'list' nesnesi kalibre edilebilen flask değil

: app.py içinde

@server.route('/devices',methods = ['GET']) 
def status(): 
    return app.stat() 

if __name__ == '__main__': 
     app.run() 

: İskele 8000 tarihinde şişeyi etkin

def stat(): 
    return(glob.glob("/dev/tty57") + glob.glob("/dev/tty9")) 

Ve bu benim sınavım:

url = "http://127.0.0.1:8000" 

response = requests.get(url + "").text 
print response 

ama Bu hatayı almaya devam edin:

"TypeError": 'list' object is not callable. 

ttyUSB'nin ve diğer aygıtların var olup olmadığını kontrol ederken yanlış mı yapıyorum?

+2

hata? –

+0

kod eksik mi ya da app.py'de neden istek ve seri içe aktardınız? –

+0

Tarayıcı "Dahili sunucu hatası" değerini döndürür. "gunicorn server: server -b 0.0.0.0:8000" komutunu kullandığımda, "test sonucunu" geri döndürmek için glob.glob değiştirdiğimde error.In app.py dosyasını görüyorum. – N45

cevap

22

Sorun, uç noktanızın bir liste döndürmesidir. Şişe sadece belirli dönüş türlerini sever. Muhtemelen en yaygın olan iki

  • bir Response nesne vardır
  • bir str (Python 2.x unicode birlikte)
Ayrıca böyle bir fonksiyonu olarak, herhangi bir çağrılabilir dönebilir

.

Bir aygıt listesini döndürmek isterseniz, birkaç seçeneğiniz vardır. Bir dize

@server.route('/devices') 
def status(): 
    return ','.join(app.statusOfDevices()) 

veya ayrı bir değer olarak her bir cihazı tedavi edebilmek istiyorsanız, bir JSON yanıtı döndürebilir listeyi dönebilirsiniz

from flask.json import jsonify 

@server.route('/devices') 
def status(): 
    return jsonify({'devices': app.statusOfDevices()}) 
    # an alternative with a complete Response object 
    # return flask.Response(jsonify({'devices': app.statusOfDevices()}), mimetype='application/json') 
Eğer alıyorsanız hat
+0

Teşekkürler! Mükemmel çalışıyor. – N45

İlgili konular