2010-10-28 11 views
1

J'adorerais utiliser un joli moteur de template avec IronPython mais je n'ai pas réussi à le faire. Serait préférable d'être en mesure de sans avoir besoin d'ajouter des libs standard Python. Ne sait pas si c'est possible. J'aime la syntaxe Ruby Erb, et espère pouvoir utiliser quelque chose de similaire.Un modèle de moteur de travail pour IronPython?

+1

Pourquoi essayez-vous d'éviter la bibliothèque standard? – Cameron

Répondre

2

Mon favori personnel est Jinja2, mais il est beaucoup plus proche de la syntaxe de Django que de la syntaxe ERB (Mako semble raisonnablement proche à cet égard). Vous pouvez jeter un oeil à this question about Python templating engines pour plus d'idées. Je peux garantir que Jinja2 travaille sur IronPython. Il a besoin de la bibliothèque standard (et je suppose que la plupart des autres le font aussi), et méfiez-vous de this bug si vous utilisez IronPython < v2.7b1 (voir les commentaires pour une solution de contournement spécifique à Jinja2 pour les versions antérieures de IronPython) , ainsi que this unicode bug, mais sinon, cela fonctionne très bien. Une chose à garder à l'esprit est que les moteurs de gabarits ont tendance à importer beaucoup de code (même si ce ne sont que des bibliothèques standard), ce qui les rend lents à charger sur IronPython, mais rapidement après la compilation JIT initiale.

+0

Pourriez-vous nous dire comment vous avez utilisé Jinja2 dans IronPython? De plus, le lien vers la discussion des autres moteurs est cassé (puisque StackOverflow ne valorise que les informations que vous pouvez déjà trouver dans le manuel d'un produit spécifique). –

+0

@Derf: Ah, tant pis pour le lien. La meilleure réponse était Jinja, suivie de l'interpolation de chaîne intégrée en Python, suivie de Genshi, suivie de Mako. Cela fait un moment que j'ai intégré Jinja2, mais je me souviens que c'était assez simple, sauf pour ce bug que j'ai lié, et un autre que j'ai oublié de lier mais que j'ai ajouté tout à l'heure. – Cameron

0

Oui - construit dans le chemin est assez conveniant pour mes besoins:

def content(result): 
    return """ 
    <p>Thank you for posting!</p> 
    <p>Result : {result}</p> 
    """.format(result=result)