Rad*_*Hex 8 python django caching django-templates django-cache
我在一些模板中缓存html,例如:
{% cache 900 stats %}
{{ stats }}
{% endcache %}
Run Code Online (Sandbox Code Playgroud)
我可以使用低级库访问缓存吗?例如
html = cache.get('stats')
Run Code Online (Sandbox Code Playgroud)
我真的需要对模板缓存进行一些细粒度的控制:)
有任何想法吗?感谢大家!:d
这是我在项目中访问模板缓存的方法:
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...
Run Code Online (Sandbox Code Playgroud)
我使用cache标签的方式有:
{% cache TIMEOUT table var1 var2 var3 %}
Run Code Online (Sandbox Code Playgroud)
你可能只需要传递一个空列表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())
Run Code Online (Sandbox Code Playgroud)
查看 templatetag 的代码cache,密钥是这样生成的:
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())
Run Code Online (Sandbox Code Playgroud)
所以你可以在你的视图中构建一些类似的东西来直接获取缓存:在你的情况下,你没有使用任何vary_on参数,所以你可以使用一个空参数md5_constructor。
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |