2008-12-18 18 views
2

J'adore le moteur StringTemplate, et j'aime le serveur Web CherryPy, et je sais qu'ils peuvent être intégrés.Comment intégrer le moteur StringTemplate dans le serveur Web CherryPy

Qui l'a fait? Comment? EDIT: L'infrastructure TurboGears utilise le serveur Web CherryPy et regroupe d'autres composants connexes tels qu'un moteur de template, des outils d'accès aux données, un kit JavaScript, etc. Je suis intéressé par MochiKit, demande CherryPy, mais je ne veux pas autre moteur de template que StringTemplate (l'architecture est critique - je ne veux pas d'un autre moteur de template cassé/mauvais).

Par conséquent, il serait acceptable de répondre à cette question en expliquant comment intégrer StringTemplate avec TurboGears.

Il peut également être acceptable de répondre à cette question en expliquant comment utiliser CherryPy et StringTemplate dans Google App Engine.

Merci.

+0

Je ne connais pas la réponse exacte, mais je vous suggère de jeter un coup d'œil au framework TurboGears. Il intègre cherrypy avec le moteur de gabarits kid.http: //docs.turbogears.org/1.0/GettingStarted/BigPicture –

Répondre

0

Rob,

Il y a une raison derrière la sélection des outils. StringTemplate n'est pas très populaire pour Python, il existe des moteurs de templates mieux supportés et avec un public beaucoup plus large. Si vous n'aimez pas Kid, il y a aussi le template de Django, Jinja, Cheetah et d'autres. Peut-être que vous pouvez trouver dans l'une d'entre elles les caractéristiques que vous aimez tant dans StringTemplate et vivre heureux pour toujours.

+2

Les gens sont connus pour sélectionner X mauvais, y compris les moteurs de modèles, donc je ne suis pas intéressé par un concours de popularité. Je veux un moteur de modèle GOOD, ce qui signifie l'application de la séparation de type MVC, qui n'a qu'une seule option: StringTemplate. Personne d'autre n'a dérangé. –

+0

+1 pour annuler la rétrogradation. StringTemplate a des instructions if-then maladroites et pas de boucles du tout ... et pas d'accès d'attribut sur les variables ... c'est sûrement un peu draconien, si elles comptent comme logique de programme? –

+0

Eli: Vous avez noté que "il y a une raison [dans] la sélection des outils." Cependant, les raisons que je déduis de votre argument semblent guidées par des préoccupations que Rob ne partage pas. Le designer de StringTemplate, Terence Parr, a fait de la manipulation de texte le travail de sa vie (littéralement.) Je vous encourage à lire les articles expliquant la philosophie de ST: "Un langage fonctionnel pour générer du texte structuré" (http://www.cs.usfca.edu /~parrt/papers/ST.pdf) et "Application d'une séparation stricte modèle-vue dans les moteurs de gabarit" (http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf) Les espaces de Python, j'ai déjà pensé que ses idées étaient ... –

4

Sur la base des tutoriels pour les deux, il semble assez simple:

 
import stringtemplate 
import cherrypy 

class HelloWorld(object): 
    def index(self): 
     hello = stringtemplate.StringTemplate("Hello, $name$") 
     hello["name"] = "World" 
     return str(hello) 
    index.exposed = True 

cherrypy.quickstart(HelloWorld()) 

Vous aurez probablement envie d'avoir de fonctions CherryPy trouver le StringTemplate dans un emplacement à la place sur le disque, mais sera comme l'idée générale ce. Django est conceptuellement similaire: les url sont mappées aux fonctions python, et les fonctions python construisent généralement un dictionnaire de contexte, rendent un modèle avec cet objet de contexte et retournent le résultat.