【问题标题】:Using Jinja2 MemcachedBytecodeCache With Django在 Django 中使用 Jinja2 MemcachedBytecodeCache
【发布时间】: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 的字节码缓存,我的站点上已经启用了该功能。在设置中实施此操作的任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: django django-templates jinja2


    【解决方案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() 是怎么调用的,这段代码在哪里?
    猜你喜欢
    • 2012-09-18
    • 2021-01-25
    • 2011-04-08
    • 2020-03-09
    • 2018-05-04
    • 2019-06-28
    • 2016-10-09
    • 2018-12-04
    • 2013-06-02
    相关资源
    最近更新 更多