Шаблоны Django: значение ключа словаря с пробелом в нем - PullRequest
18 голосов
/ 04 июня 2010

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

{"Restaurant Name": Foo}

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

{{ entry['Restaurant Name'] }} 

Ответы [ 2 ]

21 голосов
/ 04 июня 2010

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

{{ 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's not found return an empty string.
   return the_dict.get(key, '')

и используйте его в шаблоне так:

{% dictKeyLookup your_dict_passed_into_context "Restaurant Name" %}

Или, может быть, попытаться реструктурировать ваш диктант, чтобы иметь «более удобные для работы» ключи.

10 голосов
/ 20 октября 2013

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

from django import template
register = template.Library()

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

и в шаблоне

{{ entry|get:"Restaurant Name" }} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...