Saltar al contenido
Introducción

En el desarrollo de aplicaciones web con Flask y Python, es común usar plantillas HTML para facilitar la creación de páginas web dinámicas. Estas plantillas permiten separar la estructura del contenido y la lógica de la aplicación, lo que hace el código más legible y mantenible.

Para usar plantillas en Flask, se utiliza una librería llamada Jinja2, que permite definir bloques de contenido en HTML y reutilizarlos en diferentes páginas. En Jinja2, se utilizan expresiones y directivas para definir variables, ciclos, condicionales y otros elementos de las plantillas.

Para crear una plantilla en Flask, se define un archivo HTML con la estructura base de la página y se utilizan marcadores especiales ({% %}) para definir bloques de contenido que serán reemplazados por la aplicación en tiempo de ejecución. Por ejemplo, se pueden definir bloques para el encabezado, el menú, el cuerpo y el pie de página, y luego reutilizarlos en diferentes páginas.

En resumen, el uso de plantillas HTML con Jinja2 es una técnica clave en el desarrollo de aplicaciones web con Flask y Python, que facilita la creación de páginas web dinámicas y mantenibles mediante la separación de la estructura del contenido y la lógica de la aplicación.

Resumen

Flask es un framework web que se utiliza para construir aplicaciones web en Python. Una de las formas más comunes de presentar una aplicación web es a través de una página web, que normalmente se compone de HTML, CSS y JavaScript. Aunque es posible generar archivos HTML directamente en el código Python, esto puede resultar tedioso y difícil de mantener. Por lo tanto, Flask utiliza plantillas HTML para hacer que la creación de páginas web sea más fácil y eficiente.

Una plantilla HTML es básicamente un archivo HTML que contiene código Python, lo que permite la inclusión de dinamismo en la página. Para utilizar una plantilla HTML con Flask, primero tienes que crear un archivo HTML que sirva como base de la página. Por ejemplo, podrías crear un archivo base.html que incluya la estructura básica de una página web, como el encabezado, el pie de página y las referencias a archivos CSS y JavaScript. Luego, podrías crear una plantilla hija o derivada, que se compondría de la plantilla base junto con código específico para una página en particular. La plantilla derivada puede incluir bloques específicos para el contenido que se generará dinámicamente, como una lista de productos en una tienda en línea.

Para poner en funcionamiento este sistema de plantillas en Flask, puedes utilizar la extensión Jinja2 que ya está incluida en Flask. Jinja2 es un motor de plantillas para Python que permite la creación de plantillas HTML. Flask utiliza Jinja2 como motor de plantillas predeterminado para generar las páginas de la aplicación web.

En la plantilla hija, puedes utilizar la sintaxis de Jinja2 para incluir variables que se generan dinámicamente en Python. Por ejemplo, podrías incluir la variable título y después definirla en la función de ruta de Flask. De esta manera, el valor de esta variable se mostrará en la página que se genera.

En resumen, el uso de plantillas HTML en Flask permite una manera más fácil y eficiente de generar páginas web dinámicas y personalizar el contenido de acuerdo con la entrada del usuario. La extensión Jinja2 provee un sistema poderoso y flexible para crear plantillas HTML y gestionar contenido dinámico en las páginas web.

Aplicación teórica

Supongamos que estás creando una aplicación web para una tienda en línea que vende productos de tecnología. La página principal de la tienda necesita mostrar una lista de los productos más populares, una sección de ofertas especiales y un formulario para que los usuarios puedan enviar sus preguntas o comentarios. En Flask, podrías utilizar plantillas HTML para gestionar el contenido de esta página y hacerla dinámica. Algunos pasos que seguirías son:

  1. Crea un archivo HTML para la página principal de tu aplicación, por ejemplo, "index.html". En este archivo, incluirías el código HTML y CSS necesario para construir la estructura básica de la página, así como los marcadores de posición ('placeholders') para el contenido que será generado dinámicamente por tu aplicación.
  2. En tu archivo 'app.py', definirías las rutas que serán utilizadas para acceder a la página principal y procesar cualquier información que los usuarios envíen a través del formulario. Para hacer esto, utilizarías la función 'render_template' de Flask, que permite enviar variables a tu plantilla HTML y obtener el HTML resultante para mostrar en el navegador web.
  3. En la función 'index' de 'app.py', definirías las variables que quieres pasar a tu plantilla HTML (en este caso, una lista de los productos más populares y una lista de ofertas especiales). Luego, utilizarías la función 'render_template' para enviar la información de estas variables a la plantilla HTML 'index.html'.
  4. En 'index.html', utilizarías los marcadores de posición para mostrar el contenido dinámico que has pasado desde 'app.py'. Estos marcadores de posición suelen estar entre llaves dobles '{{ }}' y pueden incluir una variable con un nombre específico. En el siguiente ejemplo, se ha utilizado un marcador de posición para mostrar una sección con los productos más populares:
<div>
    <h2>Productos más populares</h2>
    <ul>
        {% for product in popular_products %}
        <li>{{ product }}</li>
        {% endfor %}
    </ul>
</div>

El resultado final sería una página web que muestra la lista de productos más populares y una sección con ofertas especiales, todo ello generado dinámicamente utilizando Flask y plantillas HTML.

Aplicación práctica

Un ejemplo sencillo de cómo se puede utilizar una plantilla HTML en Flask:

Primero, asegúrate de tener instalado Flask y crear una carpeta llamada "templates" en tu proyecto Flask. Esta carpeta es donde se almacenarán tus plantillas HTML. Luego, crea un archivo HTML en la carpeta "templates". Por ejemplo, vamos a crear un archivo llamado "inicio.html". Este archivo tendrá el siguiente código HTML:

<p>Inicio</p>
<h1>Bienvenido a mi sitio web</h1>
<p>Esta es la página de inicio</p>

Ahora, en tu archivo Python que está ejecutando Flask, importa la clase render_template desde el módulo de Flask. Esta clase nos permitirá renderizar nuestras plantillas HTML.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def inicio():
    return render_template('inicio.html')

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

En este ejemplo, hemos creado una función llamada inicio() y hemos agregado un decorador @app.route('/') que indica que la ruta de acceso de esta función será la raíz del sitio web. Luego, dentro de la función, utilizamos la clase render_template para renderizar la plantilla HTML "inicio.html". Al ejecutar este código, Flask buscará la plantilla HTML que hemos especificado, la renderizará y mostrará el resultado en el navegador en la ruta raíz del sitio web.

Este es un ejemplo muy básico de cómo se puede utilizar una plantilla HTML en Flask, pero puedes agregar variables y datos dinámicos a tus plantillas para que sean más útiles. De esta manera, puedes crear sitios web dinámicos y personalizados con Flask.