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