miércoles, 15 de julio de 2020

Flask 6. Plantillas - Condicionales -

cuaderno de bitácora web: del algoritmo a tu primer programa en Python

Condicionales (if, else, endif)


Al igual que ocurría con el uso de bucles, el uso de condicionales en Flask dentro de plantillas, es muy parecido a la forma en que los utilizarías en python. Dentro de una plantilla podemos utilizar cualquier valor de comparación que necesitemos.

La estructura general para utilizarlos dentro del archivo de plantillas sería usar las instrucciones:

        {% if CONDICION %} --> Flask evalúa que exista y que tenga información. Si no se ignorará.

            Acción a realizar si la condición existe y se cumple.           
  
        {% else %} --> Si queremos poner una alternativa si no se cumple la condición, es opcional.
           
            Acción a realizar sino se cumple la condición principal.

        {% endif %}

Vamos a verlo con un ejemplo. Seguimos trabajando con nuestros archivos inicio.py (vistas)  y plantilla_inicio.html. 

Hasta el momento, en el ejemplo con el que estamos trabajando, si un usuario accedía a la página principal del proyecto sin poner un nombre como parámetro, en la vista correspondiente, a través de un condicional, el programa se encargaba de trasformar el parámetro por defecto "nombre=None" en una variable en blanco que luego se pasaba a la plantilla. Voy a comentar (y luego al final borraré) las lineas de código que hacían esto (10 y 11):


y vamos a programar esto mismo pero en el archivo de la plantilla, que antes solamente mostraba el valor que le pasaba Flask a través de la variable "usuario".

                                    <h2>Usuario/a {{usuario}}, ¡Bienvenido!</h2>

Para ello vamos al archivo plantilla_inicio.htlm y después de borrar el código dentro de las etiquetas <section>, escribimos:



Lo que hemos hecho es lo decirle al programa lo siguiente. Si la variable usuario carece o no tiene ningún valor entonces muestra ¡Bienvenido!, en caso contrario muestra el nombre introducido por el usuario en el texto "Usuario/a {{usuario}}, ¡Bienvenido!"  

El resultado es que si acedemos a la dirección web, después de haber ejecutado el programa inicio.py, con 127.0.0.1: 5000, como ves sin nombre de usuario, conseguimos lo que antes realizábamos con un condicional en el archivo de vistas.


En cambio si entramos pasando un parámetro con el nombre del usuario, funcionará el condicional que hemos introducido dentro de la plantilla y nos mostrará lo siguiente:

    
No obstante no es recomendable abusar de las estructuras de control en las plantillas. La gestión del proyecto iría en el archivo inicio.py y el diseño en la plantilla (plantilla_inicial.html)

Para terminar este apartado si queremos poner comentarios dentro de las plantillas de Flask usaremos la siguiente estructura:

{# Texto del comentario #}

Código de los archivos de ejemplo:

inicio.py

from flask import Flask, render_template
import datetime
app=Flask(__name__)

lista_nav = ['Inicio','Pagina_1', 'Acerca_de']

@app.route('/')
@app.route('/<nombre>/')
def inicio(nombre=None):
    ahora = datetime.datetime.now()
    return render_template("plantilla_inicial.html", usuario=nombre, dia=ahora.day,
                           mes=ahora.month, ano=ahora.year, lista_nav=lista_nav)
    
@app.route('/acerca_de/')
def acercade():
    return "Pagina editada por Perico Perez"

@app.errorhandler(404)
def pagina_no_encontrada(error):
    return 'Pues no he encontrado la página....', 404

if __name__=='__main__':
    app.run(debug=True)


plantilla_inicial.html





No hay comentarios:

Publicar un comentario