Motor de plantillas que genera HTML en Python 3

Estoy trabajando en un proyecto de Python 3 y, además de algunos resultados de la ventana TK, me gustaría generar HTML. Si bien podría hacer eso con operaciones de cadena, no creo que sea fácil de mantener y adaptar por parte de los usuarios.

Sé que hay una lista de paquetes de plantillas , pero esa lista es bastante larga y menciona paquetes que están desactualizados, no son adecuados para Python 3, etc.

Para minimizar mi enfoque de prueba y error, busco una recomendación con las siguientes propiedades:

  • funciona en Python 3
  • funciona en frambuesa pi
  • el paquete se mantiene activamente
  • soporte para bucles ( for) y ramas ( if).
  • fácil de entender para desarrolladores que ya conocen HTML y CSS

Respuestas (2)

Mi recomendación personal sería Jinja2 . El lenguaje de plantillas tiene una sintaxis que no es particularmente difícil de aprender si ya estás acostumbrado a codificar en Python y tienes algo de experiencia con HTML, es increíblemente rápido, tiene una serie de características útiles para trabajar con HTML desde el primer momento, es Python puro con dependencias mínimas (si no recuerdo mal, solo hay uno fuera de la biblioteca estándar de Python), y está empaquetado para casi todas las distribuciones principales (incluida Raspbian).

El único inconveniente potencial es que la compatibilidad con Python 3 todavía aparece como experimental y necesita Python 3.3 o más reciente, aunque la compatibilidad inicial con Python 3 se agregó hace bastante tiempo (ni siquiera son compatibles con la versión que la agregó originalmente, así que creo que han pasado al menos seis meses), prácticamente han dicho que solo están siendo conservadores (todas las pruebas pasan en Python 3, solo que no están 100% seguros de que no haya casos de esquina al acecho que se rompan en Python 3), y personalmente no he tenido problemas para usarlo con Python 3.

El motor de plantillas de Django se usa bastante y es compatible con Python 3, pero no es exactamente liviano (tienes que instalar todo Django para obtener el motor de plantillas), y tienden a romper las cosas de manera sutil versión a versión. Aparte de eso, tiene la mayoría de los mismos beneficios que tiene Jinja2 (Jinja2 en realidad fue originalmente una implementación independiente del lenguaje de plantillas de Django, pero difiere bastante en que no se garantiza que las plantillas de Jinja2 y las plantillas de Django sean intercambiables).

El único otro sistema de plantillas mencionado en su enlace que realmente reconozco es Mako . Nunca lo he tratado yo mismo, pero he escuchado de varios asociados que es confiable y he visto varios proyectos grandes de Python usándolo (creo que Reddit lo usa en realidad). La sintaxis es un poco más cercana a HTML o XML que Jinja2 y Django, pero eso puede ser tanto un problema como un beneficio (cuanto más cercana es la sintaxis, más fácil es mezclar lo que es parte de la plantilla y lo que es real). HTML).

No sé si funciona específicamente en Rasberry Pi (pero no veo por qué no lo haría), pero Cheetah cubre sus otros requisitos. Lo usé para un proyecto sustancial y estaba contento con él. Me gustó especialmente la capacidad de una plantilla para heredar de otra y aumentar fácilmente su funcionalidad con código Python cuando sea necesario.