[Python] template con python

Nicola Larosa nico a tekNico.net
Mar 2 Nov 2010 11:33:55 CET


Vittorio Zuccala' wrote:
> sto cercando un sistema di template per generare file in LaTeX e HTML 
> con python in modo agevole...

Python ha letteralmente dozzine di motori di templating, e anche più
opinioni su quali e come usarli: di seguito trovi le mie. :-)

I tuoi sono due casi d'uso parecchio diversi.

Un motore di templating per HTML deve essere ben limitato, per non
rischiare di mischiare troppa logica nel template, e al contempo deve
fare autoescape e fornire quante più funzionalità specifiche all'HTML.

Per l'HTML mi piacciono i template di Django, ma il codice è un po'
lento, e non disponibile separatamente da Django. Puoi usare Jinja2
<http://jinja.pocoo.org/> che è compatibile e più veloce, anche se cede
alla tentazione di aggiungere istruzioni logiche che di solito andrebbero
evitate.

Come generare LaTeX dipende dalle tue esigenze: anziché direttamente, io
userei docutils e ReStructured Text <http://docutils.sourceforge.net/>
che tra i vari output ha anche LaTex
<http://docutils.sourceforge.net/docs/user/latex.html>.

Se poi ti interessa l'aspetto velocità (ma non è detto sia essenziale,
attenzione all'ottimizzazione prematura), ecco un confronto di parecchi
motori:

What is the fastest template system for Python?
http://stackoverflow.com/questions/1324238/what-is-the-fastest-template-system-for-python


> In rete ho trovato Cheetah[1] che mi sembra interessante.

Cheetah e molti altri usano l'approccio di definire un minilinguaggio
completo nel template, mischiando logica e dati, con un risultato poco
leggibile, poco modulare e poco manutenibile. Non mi sembra una buona idea.

Un altro approccio che non mi piace (più ;-) ) è quello dei template
basati su XML validabile come Genshi, Kid, ZPT. Mi sembrano poco
leggibili, e poco scrivibili, a fronte di un vantaggio, la validazione,
tipicamente poco interessante.

-- 
Nicola Larosa - http://www.tekNico.net/

Il coraggioso ha il terrore di perdere la possibilità di avvalersi
dell’innovazione. Nella sua mente la paura di perdere un vantaggio (che
lo metta al sicuro dai disastri della vita) ha un peso maggiore della
paura di subire una perdita per un insuccesso. - Jacopo Fo, luglio 2010


Maggiori informazioni sulla lista Python