Django 模板缓存 - 基于模板变量的动态键

Django template cache - Dynamic key based on template variable

我需要使用参数作为前缀来存储模板缓存。

Es。 有:

{% cache 5 :name:variable1: variable_y variable_z %}
    <p> {{variable1}} </p>
{% endcache %}

其中 variable1 是一个字符串

我需要存储:

:1:template.cache:name:"variable1 value":.0ecadd093a225ba502d3f6490e19b4

其实我得到:

:1:template.cache:name:variable1:.0ecadd093a225ba502d3f6490e19b4

其中 variable1 是变量名。

有办法吗? 谢谢

可以使用 Django Advanced Cache Templatetag

对于python3:pip install django-adv-cache-tag

对于python2支持:pip install 'django-adv-cache-tag<1.0'

'adv_cache_tag' 添加到 INSTALLED_APPS=[...]

在您的 settings.py

中添加 ADV_CACHE_RESOLVE_NAME = True

{% load cache %}更改为{% load adv_cache %}

来自文档:

ADV_CACHE_RESOLVE_NAME 设置为 True,如果你有 在您的上下文中名为 fragment_name 的变量:

{% cache 0 fragment_name obj.pk obj.date_last_updated %}

如果你想传递一个名字,你必须用引号括起来:

{% cache 0 "myobj_main_template" obj.pk obj.date_last_updated %}

ADV_CACHE_RESOLVE_NAME设置为False,默认,名字是 始终被视为字符串,但如果被引号括起来,它们将被删除。