Que dois-je implémenter pour ajouter un nouveau langage de modèle à repoze.bfg? L'infrastructure enverra-t-elle à mon plugin des chemins absolus ou des chemins relatifs à un paquet, ou les deux en fonction?Comment connecter un nouveau langage de modèle dans repoze.bfg?
Répondre
Le package à http://svn.repoze.org/repoze.bfg.jinja2/trunk/repoze/bfg/jinja2/ fournit des liaisons Jinja2 supplémentaires pour BFG. Fondamentalement, vous créez un tel paquet, puis permettez aux gens de le connecter à leurs systèmes.
Il existe deux niveaux d'intégration. La première est une simple intégration au niveau des importations qui permettrait aux gens de faire quelque chose comme:
de render_template_to_response import my.template.system
def aview (demande): render_template_to_response de retour ('un/parent/chemin .myt ')
En retournant les méthodes render_template * dans repoze.bfg.jina2, les remplacer par des analogues pour votre système de template préféré vous le donnerait.
L'autre niveau d'intégration est de permettre à votre système de modèle d'être utilisé comme un «moteur de rendu». Cela permet, par exemple:
@bfg_view (= renderer "certains/parent/path.myt") def aview (demande): return { 'a': 1}
Pour ce faire, singe la fonction "renderer_factory" dans repoze.bfg.jinja2, puis demandez aux gens d'ajouter ce rendu dans leur configuration via "config.add_renderer (renderer_factory, '.myt')" (impérativement) ou en incluant le fichier ZCML livré avec votre paquet dans leur ZCML.