sábado, 11 de julio de 2020

Flask 4. Plantillas - Variables -

File:RPi learning Build a Python Web Server with Flask.png

Las variables en plantillas.



Vamos a profundizar un poco más sobre el uso de plantillas en Flask. Anteriormente vimos como a través de una vista podíamos pasar información a una plantilla (a través de una variable) y luego se renderizaba, se mostraba el resultado en la pantalla del navegador.

Recordemos que lo hicimos de la siguiente forma en el archivo inicio.py:

@app.route('/')
@app.route('/<nombre>/')
def inicio(nombre=None):
    if nombre==None:
        nombre=""
    return render_template("plantilla_inicial.html", usuario=nombre)

Bien, y ¿que ocurre si queremos meter más variables en nuestra plantilla?. Pues es realmente sencillo, solo tenemos que agruparlas y meterlas en nuestra plantilla_inicial.html utilizando tantas {{ ... }} como necesitemos. 

Vamos a verlo con un ejemplo. Aprovechemos el código anterior y vamos a meter una variable más que nos diga a que día estamos cuando nos metemos en la página. Hoy, imaginemos, es 11-07-2020. Quiero que esto mismo aparezca cuando rendericemos la plantilla.

Lo primero importamos la librería datetime de Python (lo puedes ver más abajo en la línea 2) y creamos una variable llamada "ahora" que va a recoger la fecha actual de la siguiente forma en la línea 10:

ahora = datetime.datetime.now()  

y lo renderizamos asi (línea 11):

return render_template("plantilla_inicial.html", usuario=nombre, hoy=ahora)

Acabamos de utilizar dos variable y de igual forma puedes poner tantas como quieras. 

Si lo dejásemos así quedaría muy feo el resultado puesto que esto nos devolvería la fecha con el siguiente formato: 

2020-07-11 17:59:59.574899

Para arreglarlo, igual que hemos visto como se insertan variables, esas mismas variables se pueden asignar a métodos de librerias de python. E incluso utilizando la nomenclatura del punto, podemos acceder a las propiedades del objeto desde la plantilla y utilizar sus propiedades en la misma.

Nos metemos en nuestro archivo con la plantilla y modificamos la primera etiqueta <p> de la siguiente forma:

<p>Comenzamos hoy {{hoy.day}}-{{hoy.month}}-{{hoy.year}} con nuestra primera página html</p>

Este sería el resultado;



El código de inicio.py y plantilla_inicial.html sería:



Como en programación siempre hay más de una manera de hacer las cosas, fíjate que puedes hacer esto mismo, pero utilizando la nomenclatura del punto en el archivo de vistas y pasando las variables a la plantilla de la siguiente forma:



y en la plantilla usando:



El resultado es exactamente el mismo.

 


No hay comentarios:

Publicar un comentario