在模板中我有这样的代码:
{% load cache %}
{% cache 500 sidebar request.user.username %}
.. sidebar for logged in user ..
{% endcache %}
现在从视图中我需要删除这个特定的片段,所以基于id' sidebar'与arg request.user.username
答案 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