Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 从视图中删除模板片段缓存_Django_Django Templates - Fatal编程技术网

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

Django 从视图中删除模板片段缓存,django,django-templates,Django,Django Templates,在模板中,我有如下代码: {% load cache %} {% cache 500 sidebar request.user.username %} .. sidebar for logged in user .. {% endcache %} 现在,从一个视图中,我需要删除这个特定的片段,因此基于带有arg request.user.username的id“侧栏”,Django模板片段缓存的评级有点过高。它会导致一些问题,比如你刚刚遇到的问题,不得不时不时地使缓存失效。这是有原因的

在模板中,我有如下代码:

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

现在,从一个视图中,我需要删除这个特定的片段,因此基于带有arg request.user.username的id“侧栏”,Django模板片段缓存的评级有点过高。它会导致一些问题,比如你刚刚遇到的问题,不得不时不时地使缓存失效。这是有原因的

django.core.cache.utils.make\u template\u fragment\u key(fragment\u name, vary_on=None)如果要获取用于缓存的缓存密钥 片段,您可以使用make_template_fragment_键。片段名称是 与缓存模板标记的第二个参数相同;上面有一张单子 传递给标记的所有附加参数的。此功能可以是 用于使缓存项无效或覆盖缓存项

以下示例改编自文档

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

Django模板片段缓存有点高估了。它会导致一些问题,比如你刚刚遇到的问题,不得不时不时地使缓存失效。这是有原因的

django.core.cache.utils.make\u template\u fragment\u key(fragment\u name, vary_on=None)如果要获取用于缓存的缓存密钥 片段,您可以使用make_template_fragment_键。片段名称是 与缓存模板标记的第二个参数相同;上面有一张单子 传递给标记的所有附加参数的。此功能可以是 用于使缓存项无效或覆盖缓存项

以下示例改编自文档

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

谢谢,我正在研究这一点,但添加了两个导入,如您的示例所示,会引发:“raise improperyconfigured(“SECRET\u KEY设置不能为空”))django.core.exceptions.improperyconfigured:SECRET\u KEY设置不能为空。“密钥已设置,不确定我为什么会得到此结果,我了解到这可能是一个循环导入问题。这与您当前的问题或我的答案无关,而是与您的设置文件有关。我建议你在上面贴一个单独的问题,因为这是无关的,你的答案很好,谢谢。很高兴能帮上忙。您的项目一切顺利谢谢我正在调查这一点,但添加两个导入(如您的示例所示)会引发:“raise INPROPERLYCONFIGURED(“密钥设置不能为空”))django.core.exceptions.INPROPERLYCONFIGURED:密钥设置不能为空。”密钥已设置,不确定我为什么会得到这个,我了解到这可能是一个循环导入问题。这与您当前的问题或我的答案无关,而是与您的设置文件有关。我建议你在上面贴一个单独的问题,因为这是无关的,你的答案很好,谢谢。很高兴能帮上忙。祝你的项目一切顺利