在 Django 1.6 之前,cache
模板标签或多或少地在标签定义的主体中构建了它的缓存键(参见此处)。从 1.6 开始,模板片段缓存键已使用该django.core.cache.utils.make_template_fragment_key
函数构建(参见此处)。
在任何情况下,您都可以通过使用或定义来删除特定的缓存片段,make_template_fragment_key
以获取其缓存键,如下所示:
from __future__ import unicode_literals
import hashlib
from django.core.cache import cache
from django.utils.encoding import force_bytes
from django.utils.http import urlquote
TEMPLATE_FRAGMENT_KEY_TEMPLATE = 'template.cache.%s.%s'
def make_template_fragment_key(fragment_name, vary_on=None):
if vary_on is None:
vary_on = ()
key = ':'.join(urlquote(var) for var in vary_on)
args = hashlib.md5(force_bytes(key))
return TEMPLATE_FRAGMENT_KEY_TEMPLATE % (fragment_name, args.hexdigest())
def delete_cached_fragment(fragment_name, *args):
cache.delete(make_template_fragment_key(fragment_name, args or None))
delete_cached_fragment('my_fragment', 'other', 'vary', 'args')
此代码直接从 django 代码库复制,因此适用此许可和版权。