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 コードベースから直接コピーされているため、このライセンスと著作権が適用されます。