Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » получение значение словаря в шаблоне [RSS Feed]

#1 Май 18, 2014 12:18:46

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

получение значение словаря в шаблоне

Здравствуйте. Никак не могу понять где ошибка, подскажите. 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 }} <!– не выводит. Обращение через ‘.’ идет сначала к ключу словаря ведь, но желаемый результат не получаю –>

Офлайн

#2 Май 18, 2014 12:47:29

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

получение значение словаря в шаблоне

в передаваемом вами контексте есть два ключа - temp и var. Поэтому когда в шаблоне идет {{temp}} то в контексте ищется ключ temp, а конструкция {{temp.var}} ищет внутри контекста сперва ключ temp а затем некий его атрибут (согласно правилам поиска). В вашем коде в temp действительно нет var, а вот просто {{var}} имеется.
Если вы не о том спрашиваете, то уточняйте подробнее.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Май 18, 2014 13:26:54

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

получение значение словаря в шаблоне

моя цель в шаблоне получить значение словаря по ключу передаваемому через переменную 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’

Отредактировано Piton23 (Май 18, 2014 13:28:14)

Офлайн

#4 Май 18, 2014 14:09:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

получение значение словаря в шаблоне

Сделай фильтр get_key, делов то.



Офлайн

  • Начало
  • » Django
  • » получение значение словаря в шаблоне[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version