Я пытаюсь переключить шаблон Jinja2 в приложении django без перезапуска приложения.Как заставить Jinja2 шаблоны перекомпилировать?
Кто-нибудь это сделал? В основном мне нужно заставить jinja2 перезагрузить шаблоны после применения изменения выбора скина.
Я попытался повторно создать объект кеша в объекте среды шаблона без эффекта.
myskin_utils.py:
from jinja2.environment import create_cache
ENV_OBJECT.cache = create_cache(50)
Я также попытался перезагрузить модуль, который содержит мой ENV_OBJECT с
reload(myskin) #also no effect on the output
Другая вещь, которую я хотел бы изменить на лету является язык, но я думаю, это отдельный вопрос.
Спасибо за любой совет.
редактировать: У меня нет кэш установлен с Jinja2, но я вижу скорость вверх с помощью дзиндзя после переключения из шаблонов Django, я подозреваю, что шаблон байткодом живет в скомпилированный код моего зрения функций, но Я не рассматривал детали джиньи.
У меня есть ENV (экземпляр CoffinEnvironment
который подкласс Дзиндзя-х Environment
), ввозимые в глобальном пространстве имен модуля просмотра и вызывает ENV.get_template()
вид внутри функций (Django + Coffin + jinja2).
Найден, что если я называю reload()
встроенной команды питона на моем модуле среды в функции просмотра шаблон делает переключатель, но я не хотел бы, чтобы вставить этот код в любую функцию.
Спасибо! У меня нет кеша для Jinja2. Думаете, я получу дополнительную скорость в своей среде, если я это сделаю? Я понимаю, что мой байт-код шаблона уже в памяти, это правильно или нет? Еще раз спасибо! – Evgeny
Я считаю, что этот ответ неверен - согласно [this] (http://jinja.pocoo.org/docs/api/#bytecode-cache) кеш-байт используется только в первом запуске, а не на каждом запросе. Что касается автоматической перезагрузки измененных шаблонов, есть опция «auto_reload» [здесь] (http://jinja.pocoo.org/docs/api/#jinja2.Environment). Не уверен, что в ноябре 2010 года было так же, поэтому я не отрицаю этот ответ. –