Найти - Пользователи
Полная версия: получение значение словаря в шаблоне
Начало » Django » получение значение словаря в шаблоне
1
Piton23
Здравствуйте. Никак не могу понять где ошибка, подскажите. Django 1.5.1

Во вьюхе передаю словарь через context в шаблон.

#views
temp = {1: ‘111’, 2: ‘222’, 3: ‘333’}
context = {'temp': temp,
‘var’: 2,}

#template
<!– хочу получить значение 222 через var –>
{{ temp.2 }} <!– выводит 222 –>
{{ temp.var }} <!– не выводит. Обращение через ‘.’ идет сначала к ключу словаря ведь, но желаемый результат не получаю –>
JOHN_16
в передаваемом вами контексте есть два ключа - temp и var. Поэтому когда в шаблоне идет {{temp}} то в контексте ищется ключ temp, а конструкция {{temp.var}} ищет внутри контекста сперва ключ temp а затем некий его атрибут (согласно правилам поиска). В вашем коде в temp действительно нет var, а вот просто {{var}} имеется.
Если вы не о том спрашиваете, то уточняйте подробнее.
Piton23
моя цель в шаблоне получить значение словаря по ключу передаваемому через переменную var.

{{ temp.var }} // я понимаю что в словаре temp ищется ключ ‘var’, и поскольку не нашел такого ключа то ничего и не выводит. Но как сообщить django чтоб он искал не ключ ‘var’ а ключ со значением переменной var.

Вот аналог длинный и не красивый, путем прохода по словарю

#template
{% for key, value in temp.items %}
    {% if key==var %}
        {{value}}  <!-- получил желаемый результат '222'-->
    {% endif %}
{% endfor %}


Но это бред проходить по всему словарю…Толи задача решается через экранирование var толи как то по другому.

{{ temp.{{var}} }} выдает ошибку Could not parse the remainder: ‘{{var’ from ‘temp.{{var’
FishHook
Сделай фильтр get_key, делов то.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB