Я использую эту логику для рендеринга templates в приложении GAE:
path = os.path.join(os.path.dirname(__file__), 'page.html')
self.response.out.write(template.render(path, template_values))
Мне интересно, можно ли (и более эффективно) загружать текст незагруженного шаблона и хранить его в Memcache. Кажется, что метод template.render()
нужен путь к файлу, так что это возможно?
Изменить: для ясности я говорю о кешировании самого шаблона, а не о рендеринге вывода.
Google App Engine кэширует шаблоны из коробки, чтобы ваше приложение реагировало.
Вот интересная часть модуля template.py, доступного в исходном коде:
def render(template_path, template_dict, debug=False):
"""Renders the template at the given path with the given dict of values."""
t = load(template_path, debug)
return t.render(Context(template_dict))
template_cache = {}
def load(path, debug=False):
abspath = os.path.abspath(path)
if not debug:
template = template_cache.get(abspath, None) # <---- CACHING!
else:
template = None
if not template:
directory, file_name = os.path.split(abspath)
...
Как вы можете видеть, единственное, о чем нужно помнить, - это не устанавливать debug = True
в Production.