2015-09-13 13 views
41

Mi piacerebbe semplicemente stampare un "ciao mondo" alla console python dopo che il pulsante/viene chiamato dall'utente.Come stampare da Flask @ app.route alla console python

Questo è il mio approccio naive:

@app.route('/button/') 
def button_clicked(): 
    print 'Hello world!' 
    return redirect('/') 

Priorità: desidero eseguire altri comandi pitone da pallone (non shell). "print" dovrebbe essere il caso più semplice. Credo di non aver capito una svolta fondamentale qui. Grazie in anticipo!

+0

Stai confondendo due cose qui. Puoi chiamare qualsiasi funzione che ti piace da un gestore; ma il problema con la stampa è ciò che Flask sta facendo allo stdout. –

+0

Ciao @DanielRoseman e grazie per il commento! Quindi la bottiglia è in qualche modo indirizzata verso http? Cosa dovrei fare per impedirlo? Scusa se la domanda è sciocca :) –

+0

Non ci sono domande stupide :) –

risposta

55

Sembra che tu abbia funzionato, ma per gli altri in cerca di questa risposta, un modo semplice per farlo è stampando su stderr. Puoi farlo in questo modo:

from __future__ import print_function # In python 2.7 
import sys 

@app.route('/button/') 
def button_clicked(): 
    print('Hello world!', file=sys.stderr) 
    return redirect('/') 

Flask visualizza le cose stampate su stderr nella console. Per altri modi di stampare su stderr, vedi this stackoverflow post

+0

Thx @Gabe, questa sembra essere una strada da percorrere. –

+0

Ho davvero bisogno di andare su tutti i file e aggiungere 'da __future__ import print_function' anche' file = sys.stderr' per ogni stampa? c'è un modo corto per farlo? – e271p314

+0

Consiglierei di dare un'occhiata al post a cui mi sono collegato nella risposta originale. C'è una persona che consiglia di definire una funzione che viene sempre stampata su stderr (è possibile inserirla in un file util già importato). Un'altra persona consiglia sys.stderr.write. – Gabe

Problemi correlati