Шаблонный кеш Django - динамический ключ на основе переменной шаблона - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно сохранить кэш шаблона, используя параметр в качестве префикса.

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

гдепеременная1 - это имя переменной.

Есть способ?Спасибо

1 Ответ

0 голосов
/ 13 июня 2019

Это возможно с помощью Django Advanced Cache Templatetag .

Для питона 3: pip install django-adv-cache-tag

Для поддержки Python 2: pip install 'django-adv-cache-tag<1.0'

Добавить 'adv_cache_tag' к INSTALLED_APPS=[...]

Добавьте ADV_CACHE_RESOLVE_NAME = True в ваши settings.py

Изменить {% load cache %} с {% load adv_cache %}

Из документации:

Если для ADV_CACHE_RESOLVE_NAME установлено значение True, вы можете сделать это, если у вас есть переменная с именем фрагмент_имя в вашем контексте:

{% 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, по умолчанию используется имя всегда рассматривается как строка, но если они заключены в кавычки, они удаляются.

...