从视图中删除模板片段缓存

时间:2017-01-18 09:30:39

标签: django django-templates

在模板中我有这样的代码:

{% load cache %}
{% cache 500 sidebar request.user.username %}
    .. sidebar for logged in user ..
{% endcache %}

现在从视图中我需要删除这个特定的片段,所以基于id' sidebar'与arg request.user.username

1 个答案:

答案 0 :(得分:0)

Django模板片段缓存有点过分了。它会导致像你刚刚遇到的问题,不得不不时地使缓存失效。为此,存在make_template_fragment_key

  

django.core.cache.utils.make_template_fragment_key(fragment_name,   vary_on = None)如果要获取用于缓存的缓存密钥   片段,您可以使用make_template_fragment_key。 fragment_name是   与缓存模板标记的第二个参数相同; vary_on是一个列表   传递给标记的所有其他参数。这个功能可以   用于使缓存项无效或覆盖

以下示例改编自文档

from django.core.cache import cache
from django.core.cache.utils import make_template_fragment_key

key = make_template_fragment_key('sidebar', [request.user.username])
cache.delete(key) # invalidates cached template fragment