8

いくつかのテンプレート内でhtmlをキャッシュしています。

{% cache 900 stats %}
    {{ stats }}
{% endcache %}

低レベルライブラリを使用してキャッシュにアクセスできますか? 例えば

html = cache.get('stats')

テンプレートのキャッシュを細かく制御する必要があります:)


何か案は?みんな、ありがとう!:D

4

2 に答える 2

6

これは、プロジェクトでテンプレート キャッシュにアクセスする方法です。

from django.utils.hashcompat import md5_constructor
from django.utils.http import urlquote

def someView(request):
    variables = [var1, var2, var3] 
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables]))
    cache_key = 'template.cache.%s.%s' % ('table', hash.hexdigest())

    if cache.has_key(cache_key):
        #do some stuff...

cacheタグの使い方は次のとおりです。

    {% cache TIMEOUT table var1 var2 var3 %}

おそらく、空のリストを に渡す必要があるだけですvariables。したがって、あなたvariablesと cache_は次keyのようになります。

    variables = []
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables]))
    cache_key = 'template.cache.%s.%s' % ('stats', hash.hexdigest())
于 2010-11-22T12:34:03.243 に答える
2

cachetemplatetagのコードを見ると、キーは次のように生成されます。

args = md5_constructor(u':'.join([urlquote(resolve_variable(var, context)) for var in self.vary_on]))
cache_key = 'template.cache.%s.%s' % (self.fragment_name, args.hexdigest())

そのため、キャッシュを直接取得するためにビューに似たようなものを構築できます。この場合、vary_onパラメーターを使用していないため、に空の引数を使用できますmd5_constructor

于 2010-11-22T12:12:42.697 に答える