Como "novato" de Python, y principalmente con experiencia en la escritura de scripts para automatizar tareas relacionadas con la administración del sistema, no tengo mucho sentido sobre dónde usar ciertas herramientas.

Pero estoy muy interesado en desarrollar instintos sobre dónde usar herramientas / técnicas específicas.

He visto muchas cosas sobre motores de plantillas, incluido zedshaw hablando sobre el uso de Jinja2 en Lamson

Así que pensé en pedirle a la comunidad que me brinde algunos consejos sobre dónde / cuándo podría saber que debería considerar usar un motor de plantillas, como Jinja2, Genshi, Mako y compañía.

6
solarce 23 jun. 2009 a las 08:29

3 respuestas

La mejor respuesta

Como dice @mikem, las plantillas ayudan a generar cualquier forma de salida que desee, en las condiciones adecuadas. Esencialmente, la primera cosa significativa que escribí en Python fue un sistema de plantillas: YAPTU, para Yet Otra utilidad de modelado de Python, y eso fue hace más de 8 años, antes de que existieran otros sistemas buenos ... poco después tuve el honor de mejorarlo nada menos que Peter Norvig (ver aquí), y ahora tiene casi 2.000 visitas en los motores de búsqueda ;-).

Los motores de plantillas actuales son mucho mejores en muchos aspectos (aunque la mayoría son bastante especializados, especialmente para la salida HTML), pero la idea fundamental sigue siendo: ¿por qué molestarse con muchas declaraciones print y cadenas codificadas en código Python, cuando es aún más fácil separar las cadenas en archivos de plantillas editables? Si alguna vez desea (p. Ej.) Tener la capacidad de producir en francés, inglés o italiano (¡esa fue la motivación original de YAPTU durante un intenso fin de semana de piratería, ya que me estaba familiarizando con Python por primera vez ...! -), ¡poder obtener sus plantillas del directorio correcto (donde el texto se traduce adecuadamente) hará que todo sea MUCHO más fácil!

Esencialmente, creo que es más probable que un sistema de plantillas sea una buena idea, siempre que esté generando texto. He usado YAPTU o sus adaptaciones para cambiar sin problemas entre JSON, XML y salida legible por humanos (HTML, en realidad), por ejemplo; un sistema de plantillas realmente bueno, hoy en día, debería ser capaz de trascender el límite "text-ish" y la salida en protobuf u otro formato de serialización binario.

El mejor sistema de plantillas depende completamente de su situación específica: de todos modos, en sus zapatos, estudiaría (y experimentaría) con algunos de ellos. Algunos están diseñados para casos en los que los diseñadores de IU (que no pueden programar) deberían editarlos, otros solo para uso del programador; muchos están especializados en HTML, algunos en XML, otros más generales; etc, etc. ¡Pero ALGUNO de ellos (o el tuyo Yet Another one! -) seguramente será mejor que un montón de print s! -)

8
Alex Martelli 23 jun. 2009 a las 05:02

En pocas palabras, la creación de plantillas le permite escribir fácilmente un documento legible por humanos y agregar un marcado muy simple para identificar áreas que deben reemplazarse por variables, área que debe repetirse, etc.

Por lo general, un lenguaje de plantillas solo puede hacer una "lógica de plantilla" básica, lo que significa la lógica suficiente para afectar el diseño del documento, pero no lo suficiente para afectar los datos que se alimentan a la plantilla para llenar el documento.

0
Soviut 23 jun. 2009 a las 05:07

Un motor de plantillas funciona en plantillas para generar artefactos mediante programación. Una plantilla especifica el esqueleto del artefacto y el programa llena los espacios en blanco. Esto se puede usar para generar casi cualquier cosa, ya sea HTML, algún tipo de script (es decir, un archivo RPM SPEC), código Python que se puede ejecutar más tarde, etc.

3
Mike Mazur 23 jun. 2009 a las 04:38