Prior to Django 1.6, the cache
template tag built its cache keys more or less in the body of the tag definition (see here ). Starting from 1.6, the fragment fragment cache keys were built using the django.core.cache.utils.make_template_fragment_key
function (see here ).
In any case, you can delete a specific cached fragment using or defining make_template_fragment_key
to get its cache key like this:
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')
This code is directly copied from the django code base, so this license and copyright apply.
source share