Renderizar plantillas en Flask
Introducción:
Plantillas:
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í:
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>
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.
-
Gran aporte, gracias, aunque falto el html para renderizar el "hola luis", como llego ese 'luis'?
-
Hola Edgardo. Sí, ya actualice el articulo. Muchas gracias por el aviso. Saludos :D.
-
-
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.
-
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
Saludos, como siempre un buen tutorial y muy claro ejemplo, gracias, espero que tambien incluyan mas sobre django