Доступ к свойству словаря со знаком доллара `$` в имени с помощью синтаксиса шаблона 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
используется в несвязанном примере.