7.6. Intégration de moteurs de modèles

Pour ceux qui sont familiers des moteurs de modèles, Karrigell rend leur intégration extrêmement simple. Deux moteurs sont disponibles à travers des fonctions intégrées, les autres peuvent être utilisés comme dans des scripts Python ordinaires

7.6.1 Substitution de chaînes de Python

AVERTISSEMENT: PythonStringSubst est remplacé par KT, et sera enlevé de la prochaine version de Karrigell

Ce sytème de modèle utilise la syntaxe de substitution de chaînes qui a été introduite dans Python 2.4. Les fichiers de modèles utilisent des emplacements de la forme $foo

Pour s'en servir dans des scripts, utilisez la fonction intégrée PythonStringSubst(url,arg1=val1,arg2=val2...) : elle va récupérer le code source depuis le fichier à l'url indiquée, et lui appliquer les arguments mots-clés

Par exemple, supposons que la source de modèle est

<HTML>
<HEAD><TITLE>$titre</TITLE></HEAD>
<BODY>
$contenu
</BODY>
</HTML>
Le résultat de

print PythonStringSubst(src_url,
    titre='Substitution de chaînes de Python', 
    contenu='Bonjour tout le monde'
    )

sera :

<HTML>
<HEAD><TITLE>Substitution de chaînes de Python</TITLE></HEAD>
<BODY>
Bonjour tout le monde
</BODY>
</HTML>

7.6.2 Cheetah

Si le moteur de modèles Cheetah est disponible, vous pouvez l'utiliser de la même façon que ci-dessus, avec une fonction intégrée
Cheetah(url,arg1=val1,arg2=val2...)
. url est l'url du fichier de modèle, et les arguments mots-clés sont utilisés pour produire le code HTML

7.6.3 Autres moteurs

Pour utiliser d'autres moteurs, vous devez appliquer leur syntaxe dans le script. Bien que les détails d'implémentation puissent varier, votre code aura probablement l'allure suivante :

import Template # ou déclenche une Exception
# récupère la source depuis le fichier de modèle
templateDef = open(template_file_name).read()
# applique des mots-clés à la définition du modèle et imprime
print Template(templateDef, arg1=val1,arg2=val2,...)