Python moteur de template
Pourrait-il être possible si quelqu'un pouvait m'aider se lancer dans l'écriture d'un python moteur de template? Je suis nouveau sur python et que j'ai à apprendre la langue, j'ai réussi à écrire un petit framework MVC exécute dans sa propre lumière-poids-WSGI comme serveur.
J'ai réussi à écrire un script qui trouve et remplace les clés pour les valeurs:
(Évidemment, ce n'est pas la façon dont mon script est structuré ou mis en œuvre. c'est juste un exemple)
from string import Template
html = '<html>\n'
html += ' <head>\n'
html += ' <title>This is so Cool : In Controller HTML</title>\n'
html += ' </head>\n'
html += ' <body>\n'
html += ' Home | <a href="/hi">Hi ${name}</a>\n'
html += ' </body>\n'
html += '<html>'
Template(html).safe_substitute(dict(name = 'Arturo'))
Mon prochain objectif est de mettre en œuvre personnalisée états, les modificateurs, les fonctions, etc (comme les "pour" boucle) mais je ne sais pas vraiment si je devrais utiliser un autre module que je ne connais pas. J'ai pensé à des expressions régulières, mais j'ai la vague impression que ça ne serait pas un moyen efficace de le faire
Toute aide est appréciée, et je suis sûr que ce sera de l'utiliser à d'autres gens aussi.
Merci
Je ne veux pas que ce son impoli ou quoi que ce soit, mais pourquoi écrire votre propre cadre de référence quand il y a des tonnes de déjà écrites disponibles? Django est le plus populaire, et de loin; je vous recommande de le vérifier, si ce n'est pour voir comment il fonctionne.
Le lien que vous avez posté (le deuxième) est grand, c'est toujours bon de voir comment les géants du sujet. Le temps pour moi de faire une étude
Vous n'avez pas son grossier à tous, en fait, c'est un point très valable. Un déjà-écrit-cadre serait le choix le plus logique à faire. L'écriture de mon propre cadre de référence, c'est ma façon d'apprendre la langue, de plus, il y a beaucoup de choses qui se passent derrière les scènes et pour quelqu'un comme moi (qui n'est pas un expert à l'aide de python) pourrait ne pas être en mesure de reconnaître la différence entre la django la magie et le python de la magie.
Juste assez, que c'est une bonne raison. 🙂
OriginalL'auteur jturo | 2010-06-02
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de puissants modèles langues prises en charge par Python. Je préfère Jinja2. Jetez aussi un oeil à Mako et Genshi.
Mako est le plus rapide parmi les trois, mais c'est l'idéologie qui permet d'avoir un code complexe logique de droit dans le modèle de provoquer MVC principes violation de temps à autre.
Genshi a une excellente conception, particulièrement puissante fonctionnalité est inversée l'héritage de template. Mais il est plus lent chez les trois et comme le montre la pratique de toutes ses fonctionnalités sont souvent surdimensionnés en projet réel.
Jinja2 d'or est un milieu dans mon opinion personnelle. Il est facilement extensible, très rapide et familier à de nombreux puisqu'il utiliser une syntaxe similaire aux modèles Django et Liquide modèle de langue.
Grâce nailxx. Le mako site montre ceci: Mako:1.10 ms Myghty:4.52 ms Guépard: 1.10 ms Genshi:11.46 ms Django:2.74 ms Kid:14.54 ms ce qui est cool, ils ont pris le temps de comparer les moteurs. Mon cerveau est en mesure de conserver de l'information est très limitée, donc j'utilise les conventions pour m'aider à résoudre ce problème. Je suis ok avec le fait d'avoir la logique de code dans les dans les modèles, tant que c'est pas logique métier (je ne sais pas si c'est ce que tu veux dire en disant "complexe de la logique de code")
OriginalL'auteur nkrkv
bien, comme vous l'avez dit vous êtes un python recrue, et la SEULE raison pour laquelle vous écrivant un nouveau framework MVC et le moteur de modèle à partir de zéro, est à des fins d'apprentissage, vous ne devriez pas vous soucier de la performance à mon humble avis.
Mais si vous décidez de mettre quelque chose dans la production, vous devriez envisager d'utiliser existe déjà moteurs de template, comme jinja2, mako, genshi et ainsi de suite.
De toute façon si vous voulez jouer, il est un bel exemple de léger web python cadre: http://github.com/breily/juno
et lightspeed moteur de template à http://github.com/eklitzke/spitfire
happy hacking!
OriginalL'auteur Gabriel Falcão
Bien, quand je décide de jouer comme vous l'avez fait, TDD est toujours une bonne façon d'aller.
alors, pourquoi ne pas lui donner un aller?
par exemple, créez un fichier appelé jturo_template.py et d'écrire:
Désolé pour le long post, mais je pense que vous pouvez essayer ce flux de travail:
OriginalL'auteur Gabriel Falcão