Ich versuche, Jinja2 Vorlage in der Django App zu wechseln, ohne die Anwendung neu zu starten.Wie erzwinge ich, dass Jinja2-Vorlagen neu kompiliert werden?
Hat jemand das getan? Grundsätzlich muss ich jinja2 zwingen, die Vorlagen neu zu laden, sobald die Änderung der Hautauswahl angewendet wird.
Ich habe versucht, Cache-Objekt auf der Vorlage Umgebungsobjekt ohne Wirkung neu zu erstellen.
myskin_utils.py:
from jinja2.environment import create_cache
ENV_OBJECT.cache = create_cache(50)
Ich habe auch versucht, das Modul zu laden, die meine ENV_OBJECT mit
reload(myskin) #also no effect on the output
enthält Eine andere Sache, die ich on the fly ändern möchte ist die Sprache, aber ich denke, es ist eine separate Frage.
Vielen Dank für jeden Hinweis.
edit: Ich habe keine Cache mit jinja2 einrichten, aber ich habe eine Geschwindigkeit von bis sehe Jinja verwenden, nachdem er von Django Vorlagen wechseln, ich vermute, dass Template-Bytecode in dem kompilierten Code meiner Ansicht Funktionen lebt aber Ich habe nicht in Details von Jinja geschaut.
Ich habe ENV (eine Instanz von CoffinEnvironment
die Environment
Jinja der Unterklassen) im globalen Namensraum eines View-Modul importiert und ruft ENV.get_template()
Innenansicht Funktionen (Django + Coffin + Jinja2).
gefunden, dass, wenn ich reload()
builtin auf meiner Umgebung Modul innerhalb die View-Funktion der Template-Switch macht den Python nennen, aber ich würde nicht, dass Code in jede Funktion bleiben mag.
Vielen Dank! Ich habe keinen Cache für Jinja2 eingerichtet. Glaubst du, dass ich in meiner Umgebung mehr Geschwindigkeit bekomme, wenn ich das tue? Mein Verständnis ist, dass meine Vorlage Bytecode bereits im Speicher ist, ist das richtig oder nicht? Danke noch einmal! – Evgeny
Ich glaube, dass diese Antwort falsch ist - nach [diesem] (http://jinja.pocoo.org/docs/api/#bytecode-cache), Bytecode-Cache wird nur beim ersten Lauf verwendet, nicht bei jeder Anfrage. Was das automatische Neuladen geänderter Vorlagen angeht, gibt es die 'auto_relead'-Option [hier] (http://jinja.pocoo.org/docs/api/#jinja2.Environment). Ich bin mir nicht sicher, ob das im November 2010 genauso war, deshalb werde ich diese Antwort nicht ablehnen. –