Saltear al contenido principal

Motores de plantilla – Lenguaje Python

Los motores de plantilla toman cadenas tokenizadas y producen cadenas renderizadas con valores en lugar de los tokens como salida. Las plantillas se utilizan normalmente como un formato intermedio escrito por los desarrolladores para producir mediante programación uno o más formatos de salida deseados, comúnmente HTML, XML o PDF.

¿Por qué son importantes los motores de plantilla?

Los motores de plantilla permiten a los desarrolladores generar los tipos de contenido deseados, como HTML, mientras utilizan algunos de los datos y construcciones de programación, como condicionales y bucles for para manipular la salida. Los archivos de plantilla que son creados por los desarrolladores y luego procesados ​​por el motor de plantillas consisten en marcas preescritas y bloques de etiquetas de plantilla donde se insertan los datos.

Por ejemplo, mire las primeras diez líneas fuente de HTML de esta página web:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="author" content="Matt Makai">
  <meta name="description" content="Template engines provide programmatic output of formatted content such as HTML, XML or PDF.">
  <link rel="shortcut icon" href="//static.fullstackpython.com/fsp-fav.png">

Cada una de las líneas HTML anteriores es estándar para cada página en Mundo Python Python, con la excepción de <meta name="description"... línea que proporciona una descripción breve única de lo que contiene la página individual.

los
base.html Plantilla Jinja
utilizado para generar Mundo Python Python permite que todas las páginas del sitio tengan HTML coherente, pero generan dinámicamente las piezas que deben cambiar entre páginas cuando se ejecuta el generador de sitios estáticos. El siguiente código del base.html plantilla muestra que la meta descripción depende de las plantillas secundarias para generar.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="author" content="Matt Makai">
  {% block meta_header %}{% endblock %}
  <link rel="shortcut icon" href="//static.fullstackpython.com/fsp-fav.png">

En una aplicación WSGI típica, el motor de plantillas generaría la respuesta de salida HTML cuando entra una solicitud HTTP para una URL en particular.

Motores de plantillas de Python

Hay varios motores de plantillas de Python populares. Una implementación de motor de plantilla se ubicará en algún lugar del espectro entre permitir la ejecución de código arbitrario y otorgar solo un conjunto limitado de capacidades a través de etiquetas de plantilla. A continuación, se puede ver una imagen aproximada del código en el espectro de plantillas para cuatro de los principales motores de plantillas de Python.

Espectro entre la falta de lógica en las plantillas y la capacidad de ejecutar código arbitrario.

Jinja (Jinja2)

Jinja, también conocido y denominado «Jinja2», es un popular motor de plantillas de Python escrito como un proyecto autónomo de código abierto. Algunos motores de plantilla, como las plantillas de Django, se proporcionan como parte de un marco web más grande, lo que puede dificultar su reutilización en proyectos fuera de su biblioteca acoplada.

Las principales aplicaciones de código abierto de Python, como las herramientas de gestión de configuración Ansible y SaltStack
así como el generador de sitios estáticos Pelican utilizan el motor de plantilla Jinja por defecto para generar archivos de salida.

Hay mucho más que aprender sobre Jinja en la página de Jinja2.

Plantillas de Django

Django viene con su
propio motor de plantillas
además de admitir (a partir de Django 1.9) el reemplazo directo con otros motores de plantilla como Jinja.

Motor de plantillas de Mako

Mako era el motor de plantillas predeterminado para el marco web Pylons y es uno de los muchos motores de plantillas compatibles con Pyramid. Mako también tiene un amplio soporte como motor de plantilla de reemplazo para muchos otros marcos web.

Otras implementaciones del motor de plantillas de Python

Existen numerosas implementaciones de motores de plantillas de Python que van desde hacks de fin de semana hasta bibliotecas maduras desarrolladas activamente. Estos motores de plantilla se enumeran alfabéticamente:

Comparaciones de implementación del motor de plantilla

Hay muchas implementaciones de motores de plantillas de Python además de las enumeradas anteriormente. Estos recursos pueden ayudarlo a seleccionar una implementación de motor de plantilla de Python que funcione bien para su proyecto.

Recursos del motor de plantillas

Los motores de plantilla se utilizan a menudo con marcos web, una caja negra donde entra la entrada y el texto renderizado aparece mágicamente por el otro lado. Sin embargo, cuando algo inesperado regresa de un motor de plantillas, es útil saber cómo funcionan para ayudarlo a depurar. Los siguientes recursos examinan el diseño del motor de plantillas existente, así como cómo construir su propio motor cuando sea necesario para sus proyectos.

¿Quieres aprender más sobre frameworks web, CSS o JavaScript?

¿Necesitas ayuda para revisar el código de tu proyecto?



Esta entrada tiene 0 comentarios

Deja una respuesta

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

Volver arriba