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

时间:2019-06-12 11:10:12

标签: django django-templates django-cache

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

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是变量名。

有办法吗? 谢谢

1 个答案:

答案 0 :(得分:0)

可以使用Django Advanced Cache Templatetag

对于python 3: pip install django-adv-cache-tag

对于python 2支持: 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的情况下,默认名称为 通常被视为字符串,但是如果用引号引起来,则会将其删除。