J'essaie de changer le modèle Jinja2 dans l'application django sans redémarrer l'application.Comment forcer les modèles Jinja2 à se recompiler?
Quelqu'un at-il fait cela? Fondamentalement, j'ai besoin de forcer jinja2 à recharger les modèles une fois le changement de sélection de peau appliqué.
J'ai essayé de recréer l'objet de cache sur l'objet de l'environnement de modèle sans effet.
myskin_utils.py:
from jinja2.environment import create_cache
ENV_OBJECT.cache = create_cache(50)
J'ai aussi essayé de recharger le module qui contient mon ENV_OBJECT avec
reload(myskin) #also no effect on the output
Une autre chose que je voudrais changer à la volée est la langue, mais je suppose que c'est une question distincte.
Merci pour tout conseil.
modifier: Je n'ai pas cache configuré avec jinja2, mais je ne vois un Accélérez d'utiliser Jinja après le passage de modèles Django, je pense que le bytecode modèle réside dans le code compilé de mes fonctions de vue mais Je n'ai pas regardé les détails de Jinja.
Je ENV (une instance de CoffinEnvironment
qui Jinja de Environment
sous-classes) importées dans l'espace de noms global d'un module d'affichage et appelle ENV.get_template()
fonctions à l'intérieur de vue (+ Django Coffin + jinja2).
Constaté que si je l'appelle reload()
de python sur builtin mon module d'environnement au sein la fonction de vue du modèle ne se allume, mais je ne voudrais pas coller ce code dans toutes les fonctions.
Merci! Je n'ai pas de cache configuré pour Jinja2. Pensez-vous que je serai plus rapide dans mon environnement si je le fais? Ma compréhension est que mon modèle bytecode est déjà en mémoire, est-ce exact ou pas? Merci encore! – Evgeny
Je crois que cette réponse est fausse - selon [this] (http://jinja.pocoo.org/docs/api/#bytecode-cache), le cache bytecode n'est utilisé que lors de la première exécution, pas à chaque requête. Comme pour le rechargement automatique des modèles modifiés, il y a l'option 'auto_reload' [ici] (http://jinja.pocoo.org/docs/api/#jinja2.Environment). Je ne sais pas si c'était la même chose en novembre 2010, c'est pourquoi je ne déprécie pas cette réponse. –