Renderizar plantillas en Flask

Introducción:

Hola amigos de Internet, les doy la bienvenida a Mi Diario Python, el mejor blog para Aprender Python.
Como se que hoy en día las aplicaciones web tienen mucha demanda, quiero aumentar el numero de artículos sobre el tema de aplicaciones web con Python. 
En este articulo,  aprenderemos a renderizar y utilizar plantillas en Flask. Lo cual nos permite mostrar un cuerpo HTML que se encuentre en un archivo externo al del script Python.

Resultado de imagen para flask python html

Como veremos, sera de una manera muy sencilla.

Plantillas:

En Flask, podemos hacer lo siguiente para mostrar un encabezado simple:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hola_mundo():
 return '<h1>Hola Mundo</h1>'

app.run()

Resultado:

El problema en utilizar etiquetas HTM de esta manera, es que es muy engorroso. Para ello Falsk configura el motor de plantilla Jinja2 automáticamente

Para renderizar plantillas, utilizaremos el método render_template() el cual recibe como argumento el nombre de la plantilla. Veamos un ejemplo:

Lo primero que haremos sera ordenar nuestros archivos. Crearemos una carpeta templates en la cual colocaremos todas las plantillas que queramos utilizar. En mi caso solo creare un archivo HTML (index.html).

Mis archivos han quedado así:

/app_flask_templates.py
/templates
    /index.html

Lo siguiente que haremos sera escribir nuestra plantilla. Yo haré una muy simple:

<!DOCTYPE html>
<html>
<head>
 <title>Usando Plantillas en Flask</title>
</head>
<body>

 <strong>
  Hola Internet!!!
 </strong>

</body>
</html>

Ahora vamos a escribir el código en nuestro archivo app_flask_templates.py, para poder renderizar esta plantilla:

# Importamos "render_template"
from flask import Flask, render_template

# Creamos la instancia de Flask
app = Flask(__name__)

# Definemos el route
@app.route("/")
def render():
 # Retornamos la plantilla "index.html"
 return render_template("index.html")

# Iniciamos la aplicación
app.run()

Muy bien, excelente, ha quedado genial. Muy fácil ¿No crees?.

En muchas ocasiones tendremos que enviar datos a través de la URL de la pagina, las palabras claves, o parámetros. Estos podemos recibirlos y tratarlos en nuestras platillas de la siguiente manera:

Todo lo que tenemos que hacer es darle un segundo argumento al método render_template(). Veamos un ejemplo:

# Importamos "render_template"
from flask import Flask, render_template

# Creamos la instancia de Flask
app = Flask(__name__)

# Definemos el route
@app.route("/")
# Un segundo route con el nombre del parametro
@app.route('/<nombre>')
def render(nombre=None): # Inicializamos "nombre"
 # Retornamos la plantilla "index.html"
 # Le pasamo el parametro a el método render_template
 return render_template("index.html", nombre=nombre)

# Iniciamos la aplicación
app.run()

Y cambiar nuestro archivo HTML de la siguiente manera:

<!DOCTYPE html>
<html>
<head>
 <title>Usando Plantillas en Flask</title>
</head>
<body>

 <strong>
  Hola {{nombre}}
 </strong>

</body>
</html>

Simplemente agregamos {{ }} y dentro de estos, el nombre del parámetro (en este caso nombre) especificado en el código anterior. Ahora actualizamos la pagina, y el resultado seria el siguiente:

Perfecto, nos ha salido muy bien.

¿Que opinas? ¿Alguna duda? No dudes en dejar tu comentario.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

  1. Leandro dice:

    Saludos, como siempre un buen tutorial y muy claro ejemplo, gracias, espero que tambien incluyan mas sobre django

  2. edgardo001 dice:

    Gran aporte, gracias, aunque falto el html para renderizar el "hola luis", como llego ese 'luis'?

    1. Luis Salcedo dice:

      Hola Edgardo. Sí, ya actualice el articulo. Muchas gracias por el aviso. Saludos :D.

  3. Abel Monasterio dice:

    En el segundo ejemplo en el que sale "Hola Luis", no pones el código en HTML de ejemplo desde donde saldrá la cadena, no esta claro (al menos para mí) cómo es que funciona lo que estas explicando.

    1. Luis Salcedo dice:

      Hola Abel. Sí, espero que me disculpes, se me paso por alto. Ya actualice el articulo.

      A la final, en el HTML, solo debemos agregar doble corches y dentro de estos el nombre del parámetro. Quedaría así:


      Hola {{nombre}}

      Cualquier otra duda, puedes comentarla. Saludos :D.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey