如何访问模板缓存?姜

2024-06-09 16:37:36 发布

您现在位置:Python中文网/ 问答频道 /正文

在几个模板中缓存html,例如:

{% cache 900 stats %}
    {{ stats }}
{% endcache %}

我可以使用低层库访问缓存吗?e、 g

^{pr2}$

我真的需要对模板缓存进行细粒度控制:)


有什么想法吗?谢谢大家!:天


Tags: 模板cachehtmlstats细粒度低层pr2endcache
2条回答

查看cachetemplatetag的代码,生成的键如下所示:

args = md5_constructor(u':'.join([urlquote(resolve_variable(var, context)) for var in self.vary_on]))
cache_key = 'template.cache.%s.%s' % (self.fragment_name, args.hexdigest())

因此,您可以在视图中构建类似的东西来直接获取缓存:在您的例子中,您没有使用任何vary_on参数,所以可以使用空参数来md5_constructor。在

以下是我在项目中访问模板缓存的方式:

from django.utils.hashcompat import md5_constructor
from django.utils.http import urlquote

def someView(request):
    variables = [var1, var2, var3] 
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables]))
    cache_key = 'template.cache.%s.%s' % ('table', hash.hexdigest())

    if cache.has_key(cache_key):
        #do some stuff...

我使用cache标记的方式是:

^{pr2}$

{cd2>可能需要清空列表。 因此,您的variables和缓存{}将如下所示:

    variables = []
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables]))
    cache_key = 'template.cache.%s.%s' % ('stats', hash.hexdigest())

相关问题 更多 >