2015-07-09 5 views
0

У меня есть словарь, который выглядит следующим образом:перебрать словарь один ключ в другой словарь в шаблоне Django

timeTables = { 
     'today': {'date_start': datetime.now(), 'date_end': None}, 
     'yesterday': {'date_start': (datetime.now() - timedelta(days=1)), 'date_end': None}, 
     'week': {'date_start': (datetime.now() - timedelta(weeks=1)), 'date_end': datetime.now()}, 
     'month': {'date_start': (datetime.now() - timedelta(days=30)), 'date_end': datetime.now()}, 
    } 

Я хочу, чтобы выводить today ключи словаря элементов в цикле в шаблоне Django.

Я могу сделать это в обычном Python с помощью:

for key, value in timeTables['today'].items(): 
     print key, value 

Но это же не будет работать в шаблоне Django.

Делать это дает ошибку:

{% for key, value in data['today'].items %} 
    {{ key }} {{ value }} 
{% endfor %} 

TemplateSyntaxError at/
Could not parse the remainder: '['today'].items' from 'data['today'].items' 
+0

Пробовали ли вы 'data.today.items'? – Holt

+0

@ Холл, который сработал. – ComputerLocus

+0

@Fogest: несмотря на то, что он вдохновлен синтаксисом Python, язык шаблонов Django не является Python. И язык шаблонов FWIW Django задокументирован здесь: https://docs.djangoproject.com/en/1.8/ref/templates/language/ –

ответ

1

В шаблонах Django, вы не можете использовать синтаксис data['today'] для доступа к значению в dictionnary, вам нужно использовать . (data.today):

{% for key, value in data.today.items %} 
    {{ key }} {{ value }} 
{% endfor %} 
0

попробовать это: Если вы хотите только словарь поле только «сегодня» ключ затем просто отправить данные [ «сегодня»] с точки зрения { «данных»: данные [ 'сегодня']}, а затем сделать его люблю:

{% for key, value in data.items %} 
    {{ key }} {{ value }} 
{% endfor %} 

Если вы хотите весь словарь будет отправлен затем,

{% for key, value in data.items %} 
    {% for k,v in value.items %} 
    {{k}} {{v}} 
    {% endfor %} 
{% endfor %} 
+0

Я не знаю, Думаю, это отвечает на вопрос. Первое решение предполагает, что мне нужно отправить совершенно другой словарь, который не является тем, о чем я прошу, а второе решение, похоже, проходит через весь словарь, а не только один ключ. – ComputerLocus

Смежные вопросы