He visto un tutorial sobre Flask y parece que no puedo entender cómo funciona este código

def my_home():
    return render_template("./index.html")

@app.route('/<string:page_name>')
def html_page(page_name):
    return render_template(page_name)```

Específicamente, /<string:page_name> me resulta confuso, ¿cómo entiende qué es page_name y lo redirige a esa página? ¡Gracias!

0
Lone Creation 23 jun. 2020 a las 13:57

2 respuestas

La respuesta a esto está en la magia de los decoradores y no en el matraz. Un decorador es una función de alto nivel que acepta una función y la manipula en consecuencia. Vea el siguiente ejemplo:

def route(func, user_path):
    # internal flask mechanisms here
    def callback(user_path):
        return http.route(user_path, func)
    return callback

@route("hello_world")
def render():
    return "Hello World"

El decorador toma su función como entrada y realiza algunas acciones para correlacionar la ruta con su entrada dada. Obviamente, esto se puede utilizar para muchos otros fines. Por ejemplo, el matraz también permite que un decorador adicional defina el tipo de solicitud permitida para la función, como GET, POST, etc.

Para responder a su pregunta, el matraz acepta un parámetro de URL y genera la página en función de ese parámetro dado. Esto se conoce como enrutamiento dinámico y se utiliza para consultas de bases de datos basadas en la ruta (aunque el ejemplo dado es trivial). Entonces, si alguien va a page_name "John", puede usar ese valor y crear una plantilla en su html para saludar dinámicamente a John (y a quien sea).

0
justahuman 23 jun. 2020 a las 11:04
/<string:page_name>

Significa que el matraz espera una cadena de disfraces después de su dominio, es decir

www.yourdomain.com/anycostumestring

/<data_type:your_variable_name>  i.e. /<integer:page_number>

Entonces su variable se pasa como parámetro a su función. Esta función devuelve el sitio que se pasa en la URL como una cadena

0
Maximilian Kromer 23 jun. 2020 a las 11:09