15👍
For Django 1.6+ and from the Django Documentation you could just generate the key of the partial you’re looking for and delete it:
from django.core.cache import cache
from django.core.cache.utils import make_template_fragment_key
# cache key for {% cache 500 sidebar username %} templatetag
key = make_template_fragment_key('sidebar', [username])
cache.delete(key) # invalidates cached template fragment
You just need to call make_template_fragment_key
with your previously defined courseTable
argument.
8👍
If you could afford to empty memcached entirely, run flush_all
cmd or simply
from django.core.cache import cache
cache.clear()
Or else you have to generate the cache-key manually. The timeout
will not be refreshed until the key is expired.
- Django translate model choices
- AWS Elastic Beanstalk: WSGI path incorrect?
- Autocomplete field in Django
- How to pass an url as parameter of include
- Django DateTimeField says 'You are 5.5 hours ahead of server time.'
2👍
Prior to Django 1.6, the cache
template tag built its cache keys more-or-less in the body of the tag’s definition (see here). From 1.6 onward, template fragment cache keys have been built using the django.core.cache.utils.make_template_fragment_key
function (see here).
In any case, you can delete a specific cached fragment by using or defining make_template_fragment_key
to get its cache key like so:
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 codebase so this license and copyright applies.
- How to handle Python multiprocessing database concurrency, specifically with django?
- Docker Django could not connect to server: Connection refused