J'ai envisagé une solution de modèles, bien que mes choix soient entre Mako et Genshi. Je trouve des modèles à Genshi un peu laids, alors je me transforme plus vers Mako. P>
Je suis allé se demander: qu'est-ce qui est si bon sur le fait que Mako permet un code python incorporé? Comment est-il pratique pour la moyenne Joe? P>
ne permettrait pas de modeler que suffit sans avoir un code python incorporé? P>
5 Réponses :
Cela semble être un peu religieux. Les modèles Django prennent une ligne difficile: aucun code dans les modèles. Ils le font en raison de leur histoire en tant que système utilisé dans les magasins où il y a une séparation claire entre ceux qui écrivent du code et ceux qui créent des pages. D'autres (peut-être vous) ne font pas une distinction si claire et se sentirait plus à l'aise d'avoir une ligne plus flexible entre la mise en page et la logique. P>
Cela revient vraiment à une question de goût. P>
comme le mako Page d'accueil souligne, les avantages de Mako sont assez clairs: incroyablement rapide, familier instantanément à quiconque pratique avec python en termes de syntaxe et de fonctionnalités. P>
Vous pouvez vous discipliner de ne pas injecter aucun code Python dans le modèle, à moins que ce soit vraiment le dernier recours à faire le travail. Je suis confronté à un problème similaire avec le modèle de Django où je dois faire des gymnastiques sérieuses CSS pour afficher mon contenu. Si j'aurais pu utiliser du code Python dans le gabarit, cela aurait été meilleur. P>
Heureusement, il est très facile d'utiliser Mako à Django, si vous êtes tellement enclin ( code.google .Com / p / django-mako entre autres endroits)
Genshi est conçu (lu: biaisé, optimisé) pour la génération de documents XML (même s'il offre une assistance pour générer tout type de document texte). Les modèles de Mako et Django sont conçus comme le système de modèles em> Texte générique. Evoque également, mais avec une différence fondamentale qu'il fait le choix de conception pour permettre uniquement à Python expressions < / em> dans les modèles, c'est-à-dire aucun Python déclarations em>. p>
Un résultat net important de ceci est que Evoque est capable d'exécuter une évaluation de modèle dans un bac à sable - c'est-à-dire que vous pourriez donner aux utilisateurs sans confiance en écriture-accès à un code source d'un modèle - une fonctionnalité pratiquement impossible pour les moteurs de modèles qui Autoriser également l'intégration des les déclarations de Python em>. Oh, et tout en ne perçant aucun dans une comparaison directe des caractéristiques, Evoque est dans certains cas effectivement plus vite que Mako, et elle fonctionne également sur Python 3. P>
ne permettrait pas de modeler que suffit sans avoir un code python incorporé? P> blockQuote>
Uniquement si votre langage de modèles a suffisamment de fonctionnalités logiques qu'il s'agit essentiellement d'une langue de script en soi. À quel point, vous pourriez aussi bien avoir utilisé Python. P>
Les sites plus impliqués ont souvent besoin de la logique de présentation complexe et des structures modèles non triviales telles que des sections répétées dans différents endroits / pages et arbres récursifs. Ce n'est pas amusant si votre langage de modèles attache vos mains derrière votre dos, car il prend la position religieuse que "le code dans le modèle est mauvais". P>
Ensuite, vous venez de finir par écrire des fonctions d'assistant de présentation dans votre logique commerciale Python, qui est un pire mélange de la présentation et de la logique d'application que vous deviez commencer par. Langues qui prennent le courant de vous parce qu'ils ne vous font pas confiance pour l'utiliser avec goût sont boiteux. P>