Templite, le moteur de template Python qui tient dans un fichier


pip install templite

from templite import Templite
 
template = """
This is the place where all the ${variable}$ go...
The time goes fast but everything is slow...
${for woho in whohos:}$
    ${woho}$
${:end-for}$
"""
 
t = Templite(template)
print t.render(variable="junkies", whohos=["woo hoo", "woo hoo", "woo hoo hoo hoo"])

Ce qui donne :

This is the place where all the junkies go...
The time goes fast but everything is slow...

    woo hoo

    woo hoo

    woo hoo hoo hoo

Je n’ai pas écrit templite, je l’ai juste mis sur pypi et github en respectant sa paternité car il restait sous forme de snippet perdu depuis trop longtemps.

Vous pouvez le piper mais vraiment, ce n’est pas obligatoire, comme peewee et bottle, il tient dans un fichier, donc on peut juste dumper le module dans son code source.

15 thoughts on “Templite, le moteur de template Python qui tient dans un fichier

  • sana

    Question newbee d’or:

    On s’en sert à quelle occasion?

    (J’ai ne l’ai pas ecriT, vous pouvez le pipeR)

    • Sam Post author

      Pour toute opération de templating qu’on ferait avec jinja ou genshi ou mako… Mais en plus léger. Maintenant j’ai conscience que pas mal de gens ne savent pas ce que c’est qu’un template, mais ce n’est pas le but de l’article. Un truc de plus à rajouter à ma todo list : “qu’est-ce qu’un template et à quoi ça sert”.

  • fpp

    Sur pypi et github, dans l’introduction:

    ” I’m am not the author ”

    Le “am” et le “‘m” sont justes tous les deux, mais pas à la fois :-)

  • Maxime

    Il y a un soucis avec ce moteur de template, il ne preserve pas l’indentation si le motif contient des newlines (il retourne a la ligne au lieu de rester aligné au niveau défini dans le template => pas correct).

    J’ai essayé avec la plupart des moteurs de template (Mako, jinja2, etc.), ils se plantent tous de la meme facon. Le seul qui a le comportement attendu c’est StringTemplate.

  • Sam Post author

    D’un part, c’est un moteur de template minimaliste, donc franchement, cherche la petite bête, c’est mesquin. En plus, templite vient avec la fonction emit() spécifiquement pour adresser ce problème.

  • Uggla

    Bonjour,

    J’ai récupéré templite depuis pypi avec un petit pip install templite.

    Sauf qu’il n’y a pas le source templite.py dans le package.

    [uggla@uggla templite-0.1.3-py2.7.egg-info]$ find /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info
    /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info
    /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info/dependency_links.txt
    /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info/SOURCES.txt
    /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info/PKG-INFO
    /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info/installed-files.txt
    /usr/lib/python2.7/site-packages/templite-0.1.3-py2.7.egg-info/top_level.txt
    

    Bref du coup ça marche moins bien. :)

    Serait il possible de mettre à jour le package avec le source sur pypi ? Si oui, je ferais ensuite un paquet rpm pour Fedora.

  • Nick_au_Boulot.

    Hello les snake people. :)

    j’utilise Template de la classe string.
    Si tu as un exemple plus “utile” de templite, je suis preneur.

    Thanks les pythonmen. :)

  • Sam Post author

    Du coup pas de if et de boucles dans ton templates ? Quel intérêt par rapport à .format() (qui a le bénéfice d’avoir un minilangage de formatage intégré).

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.