如何访问模板缓存?- Django
我在一些模板中缓存 HTML,比如:
{% cache 900 stats %}
{{ stats }}
{% endcache %}
我可以使用低级库来访问这个缓存吗?比如:
html = cache.get('stats')
我真的需要对模板缓存有更细致的控制 :)
有什么想法吗?谢谢大家! :D
2 个回答
2
看一下这个cache
模板标签的代码,生成键的方式是这样的:
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
传一个空的参数。
6
这是我在项目中访问模板缓存的方法:
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
标签的方式是这样的:
{% cache TIMEOUT table var1 var2 var3 %}
你可能只需要给variables
传递一个空列表。
所以,你的variables
和cache_key
看起来会是这样的:
variables = []
hash = md5_constructor(u':'.join([urlquote(var) for var in variables]))
cache_key = 'template.cache.%s.%s' % ('stats', hash.hexdigest())