2012-10-03 16 views
6

Guardando il default "Ciao mondo" scritto sul sito web di Flask:In Flask, perché funziona questa app ciao mondo?

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

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

Sono molto nuovo alla programmazione, quindi non capisco come questo script può lavorare - la funzione hello() non viene chiamato da nessuna parte , quindi Flask mostra semplicemente l'output della prima funzione trovata? Cosa succede se volevo visualizzare gli output di due o tre funzioni sulla pagina?

+2

Ricorda inoltre che app.run() chiama quello che è effettivamente un server Web di sviluppo molto semplice per eseguire il tuo script, il decoratore app.route ("/") funziona insieme al server. Quindi estendere ciò che Lewis ha detto: Flask ha una grande quantità di codice "sotto il cofano" per far funzionare la sceneggiatura, e non è tutto visibile nello script di esempio. – abought

risposta

10

Questa linea: @app.route("/") registra la funzione del gestore per il '/' percorso. Quando il browser interroga '/' (la radice), l'applicazione risponde "Hello World!".

La sintassi @ si chiama Decoratori.

How to make a chain of function decorators?

1

un'occhiata a questo codice, per esempio:

def decorator(func): 
    print "this function is called for " + func 
    def wrapper(*args, **kwargs): 
      return func(*args, **kwargs) 
    return wrapper 

@decorator 
def hello(): 
    return "Hello" 

Salva in un file e provarlo, vedrete che dopo aver definito ciao a vedere qualcosa di simile:

questa funzione viene chiamata per < funzione ciao a 0x241c70>