Подтвердить что ты не робот

Шаблоны Django: значение словарного ключа с пробелом в нем

В шаблоне Django существует ли способ получить значение из ключа, в котором есть пробел? Например, если у меня есть такой диктофон:

{"Restaurant Name": Foo}

Как я могу ссылаться на это значение в моем шаблоне? Псевдо-синтаксис может быть:

{{ entry['Restaurant Name'] }} 
4b9b3361

Ответ 1

Нет чистого способа сделать это со встроенными тегами. Попытка сделать что-то вроде:

{{ a.'Restaurant Name'}} or {{ a.Restaurant Name }}

вызовет ошибку синтаксического анализа.

Вы можете сделать цикл for через словарь (но он уродливый/неэффективный):

{% for k, v in your_dict_passed_into_context %}
   {% ifequal k "Restaurant Name" %}
       {{ v }}
   {% endifequal %}
{% endfor %}

Пользовательский тег, вероятно, будет более чистым:

from django import template
register = template.Library()

@register.simple_tag
def dictKeyLookup(the_dict, key):
   # Try to fetch from the dict, and if it not found return an empty string.
   return the_dict.get(key, '')

и используйте его в шаблоне следующим образом:

{% dictKeyLookup your_dict_passed_into_context "Restaurant Name" %}

Или, может быть, попробуйте перестроить свой dict, чтобы иметь "легче работать с".

Ответ 2

Вы также можете использовать собственный фильтр.

from django import template
register = template.Library()

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

и внутри шаблона

{{ entry|get:"Restaurant Name" }}