在 Django 中使用 Jinja2 MemcachedBytecodeCache
Posted
技术标签:
【中文标题】在 Django 中使用 Jinja2 MemcachedBytecodeCache【英文标题】:Using Jinja2 MemcachedBytecodeCache With Django 【发布时间】:2020-08-04 14:26:33 【问题描述】:如果这个答案很明显,我深表歉意,但我似乎无法弄清楚如何在 Django 中启用 Jinja2 的 MemcachedBytecodeCache(我使用的是 3.0 版,但通常两者都是)。 Jinja's documentation 听起来像是一个相对简单的设置:
class jinja2.MemcachedBytecodeCache(client, prefix='jinja2/bytecode/', timeout=None, ignore_memcache_errors=True)
这个类实现了一个字节码缓存,它使用 memcache 缓存来存储信息。它不强制执行特定的 memcache 库(tummy 的 memcache 或 cmemcache),但会接受任何提供所需最小接口的类。
显然,目标是使用 Memcached 启用 Jinja 的字节码缓存,我的站点上已经启用了该功能。在设置中实施此操作的任何帮助将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:要使用字节码缓存,请将其实例化并将其传递给环境:
from django.core.cache import cache
from jinja2 import Environment, MemcachedBytecodeCache
def environment(**options):
bcc = MemcachedBytecodeCache(cache._cache, prefix='jinja2_bytecode_', timeout=3600, ignore_memcache_errors=True)
env = Environment(trim_blocks=True, lstrip_blocks=True, bytecode_cache=bcc, **options)
return env
把这段代码放在你的基本目录的jinja2_setup.py中,并在你的settings.py中实例化环境:
TEMPLATES = [
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(BASE_DIR, 'jinja2'), ],
'APP_DIRS': True,
'OPTIONS': 'environment': "jinja2_setup.environment",
,
]
【讨论】:
您能否提供更多有关其工作原理的背景信息?例如。 environment() 是怎么调用的,这段代码在哪里?以上是关于在 Django 中使用 Jinja2 MemcachedBytecodeCache的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 和 Jinja2/Coffin 中使用 django-paging 扩展
在 Django 中使用 Jinja2 MemcachedBytecodeCache
在 Jinja2 模板中使用 DateTimeFields 显示本地时间 - Django