2012-10-03 42 views
6

Mirando el defecto "Hola mundo" script en la página web del frasco:En Flask, ¿por qué funciona esta aplicación hello world?

from flask import Flask 
app = Flask(__name__) 

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

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

soy muy nuevo en la programación, por lo que no entienden cómo este script puede trabajar - la función hello() no se llama en cualquier parte , ¿Flask simplemente muestra la salida de la primera función encontrada? ¿Qué sucede si quiero mostrar salidas de dos o tres funciones en la página?

+2

Recuerde también que app.run() llama a lo que es efectivamente un servidor web de desarrollo muy simple para ejecutar su script, el decorador app.route ("/") funciona junto con el servidor. Así que para extender lo que Lewis dijo: Flask tiene una gran cantidad de código "oculto" para hacer que el script funcione, y no todo es visible en el script de muestra. – abought

Respuesta

10

Esta línea: @app.route("/") registrará la función como el controlador para la ruta '/'. Cuando el navegador consulta '/' (la raíz), la aplicación responde "¡Hola mundo!".

La sintaxis @ se llama Decorators.

How to make a chain of function decorators?

1

echar un vistazo a este código, por ejemplo:

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" 

Guardar en un archivo y probarlo, verá que después de definir hola que se ve algo como esto:

esta función se llama a la función < hola a 0x241c70>