template jinja for example python templates code-generation

jinja - python template example



La mejor biblioteca de plantillas de Python para facilitar la generación de código (7)

En lugar de pasar el día siguiente (o el año) leyendo sobre todos ellos, ¿hay alguna sugerencia para los motores de plantillas que debería analizar con más detalle?


La preocupación más importante es si puede vivir con la sintaxis que requieren las plantillas. Segundo y tercero (dependiendo de las necesidades de su aplicación) sería la velocidad y la facilidad de distribución.

Los miré a todos, pero la única sintaxis que podía soportar era Jinja2 . Jinja tiene la ventaja de admitir muchas construcciones de Python, por lo que es muy fácil agregar fragmentos de funcionalidad a las plantillas según sea necesario, sin codificar etiquetas especiales. La mayoría de lo que requiere etiquetas en otros sistemas de plantillas es manejado por macros en Jinja.

Por supuesto, si está buscando algo fácil y rápido, es difícil superar la API de plantillas de Python en el lenguaje principal.


Me gusta Clearsilver porque funciona con varios idiomas diferentes y aplica estrictamente la separación entre los datos y la presentación. Anteriormente usé Cheetah y aunque es bastante agradable, no me gustaba trabajar con lo que a veces parecía una forma limitada de Python.


Mejor sugerencia: pruébalos todos. No tardará mucho.

Mi favorito: Jinja2 (por una milla)

Tiene una sintaxis decente, puede rastrear errores a través de ella y se puede colocar en el sandbox.


Si está realizando la generación de código, puede que le resulte útil Cog : es específicamente para la generación de código, en lugar de ser un lenguaje de plantillas generalmente aplicable.


Si está trabajando con X [HT] ML, uno de los sistemas de plantillas basados ​​en etiquetas que pueden dejarlo con plantillas bien formadas es un buen movimiento. Yo uso PXTL , FWIW. (Puede producir otros formatos, pero si su énfasis no es XML o HTML, no sería una opción sensata).

Tengo un intenso desagrado por los sistemas de plantillas que dicen "ayudarlo a separar la lógica de negocios y la presentación" al limitar las expresiones a su propio Little Language. Parece que no entienden que existe algo así como la "lógica de presentación", y que a veces puede ser lo suficientemente complicado como para necesitar un lenguaje real como Python para ejecutarlo. Hacer que eche la lógica de presentación a la aplicación con la lógica empresarial no es una victoria . ¡Evitar!

(El enfoque de mini lenguaje separado de expresiones limitadas tenía algún sentido en ''EL'' de JSP, ya que Java es demasiado molesto para usarlo en una biblioteca de plantillas. ¡Pero tenemos Python! Es perfecto para escribir expresiones en plantillas tal como están; La funcionalidad y el hecho de que el usuario aprenda otro idioma nuevo no gana nada.)


Si quieres una opción muy ligera , prueba templete. Solo son como 80 líneas de código en un solo módulo. Echa un vistazo here y here (fue publicado en un blog). Creo que es una solución inteligente y muy enfocada, si las características son suficientes para usted.


Actualización: Kid parece haber sido sucedido por Genshi .

He usado Kid, que es uno de los sistemas más antiguos. He encontrado que es extremadamente sólido, estable y confiable. Está basado en etiquetas, por lo que es bueno para trabajar con XML / HTML. Es interesante que las funciones de la plantilla se realicen como atributos HTML, no como bloques especiales, es decir, {% ...%}. Sin embargo, algunos aspectos de eso (especialmente la forma en que lo hace ''incluye'') pueden ser bastante molestos. Tampoco parece que se haya desarrollado activamente o en absoluto.

Vale la pena echarle un vistazo si quieres algo que ha existido por un tiempo y se ha vuelto bastante estable. Si quieres algo más reciente, he escuchado cosas buenas sobre Genshi y Jinja.