Доступ к свойству словаря со знаком доллара `$` в имени с помощью синтаксиса шаблона django в Klaviyo

Я пытаюсь получить доступ к свойству с $ в его имени в шаблоне django. К сожалению, у меня нет контроля ни над фильтрами, ни над именами переменных.

Объект структурирован следующим образом:

{
    "title": "Some title",
    "metadata": {
        "$price": 9.99,
        "$inventory_policy": 1
    }
}

Я пытаюсь получить доступ к {{ item.metatadata.$price }}, но построитель шаблонов падает с неопределенной ошибкой.

Я уже пробовал обходные пути для шаблонов python, но они также терпят крах:

{{ item.metatadata.$$price }}
{{ item.metatadata.${price} }}

Для справки, это в шаблоне Klaviyo.

Я думаю, что для этого можно использовать пользовательский фильтр: https://docs.djangoproject.com/fr/4.1/howto/custom-template-tags/

в templatetags.extras.py

from django import template

register = template.Library()

@register.filter
def get_value(dictio, key):
   return dictio.get(key, '')

и за его использование:

{% load extras %}
{{ item.metatadata|get_value:"$price" }} 

Не обращайте внимания. Они поставляют недокументированный фильтр lookup именно для этой цели. Возможно, он выглядит точно так же, как в ответе Лукаса Гругру.

{{ item.metatadata|lookup:"$price" }} 

Соответствующий раздел в документации Klaviyo - https://help.klaviyo.com/hc/en-us/articles/115005084927-Guide-to-Template-Tags-and-Variable-Syntax#event-variables-4, где фильтр lookup используется в несвязанном примере.

Вернуться на верх