理論上、はい。最初this snippet of codeで行うことができますジャンゴで使用したのと同じパターンでテンプレートキャッシュキーを作成する必要があります。
from django.utils.hashcompat import md5_constructor
from django.utils.http import urlquote
def template_cache_key(fragment_name, *vary_on):
"""Builds a cache key for a template fragment.
This is shamelessly stolen from Django core.
"""
base_cache_key = "template.cache.%s" % fragment_name
args = md5_constructor(u":".join([urlquote(var) for var in vary_on]))
return "%s.%s" % (base_cache_key, args.hexdigest())
あなたはそれを変更するcache.set(template_cache_key(sidebar), 'new content')
ような何かを行うことができます。
ただし、ビューでこれを行うのは醜いです。モデルが変更されたときには、post-save signalsを設定してキャッシュエントリを期限切れにする方が理にかなっています。
上記のコードスニペットは、Django 1.2以下で動作します。私はDjango 1.3互換性についてはわかりません。 django/templatetags/cache.py
に最新の情報があります。
Django 1.7の場合、django/core/cache/utils.pyには使用可能な機能があります。
Django 1.7では動作しません... –
@SimonSteinberger:うん、少し修正する必要があります。 https://github.com/django/django/blob/master/django/core/cache/utils.py – mipadi
ここに記載されている機能をコピーまたは使用してください: https:///docs.djangoproject.com/ja/dev/topics/cache/#django.core.cache.utils.make_template_fragment_key –