Для цикла в Django шаблон не обрабатывается
Я создаю словарь и передаю его моему шаблону Django:
my_dict = {'boo': {'id':'42'}, 'hi': {'id':'42'}}
t = get_template('my_site.html')
html = t.render(my_dict)
print(html)
return HttpResponse(html)
Мой шаблон Django выглядит так:
<html>
<body>
Out of Dictionary <div>
{% for key in my_dict %}
<span>{{ key }}</span>
{% endfor %}
</div>
After dictionary
</body>
</html>
Мой вывод в браузере выглядит так: Out of Dictionary After Dictionary
HTML выглядит так:
<html>
<body>
Out of Dictionary <div>
</div>
After dictionary
</body>
</html>
Я также попробовал следующее, чтобы добиться признания диктата:
{% for key in my_dict %}
{% for key in my_dict.items %}
{% for key, value in my_dict.items %}
{% for (key, value) in my_dict.items %}
2 ответа
my_dict = {'boo': {'id':'42'}, 'hi': {'id':'42'}}
t = get_template('my_site.html')
html = t.render(my_dict)
Ваш контекст имеет два ключа, boo
а также hi
, Вы можете получить к ним доступ в шаблоне следующим образом:
{{ boo }}, {{ hi }}
Если вы хотите использовать mydict
в шаблоне вы бы вложили этот словарь в контекстный словарь:
my_dict = {'boo': {'id':'42'}, 'hi': {'id':'42'}}
context = {'my_dict': my_dict}
t = get_template('my_site.html')
html = t.render(context)
В шаблоне вы можете сделать:
{{ my_dict }}
или же
{% for key, value in mydict.items %}
{{ key }}: {{ value }}
{% endfor %}
Сначала вам нужно создать объект Context и передать его в функцию рендеринга. Смотрите этот пример из документации
Во-вторых, чтобы ваш код работал так, как я думаю, вы намереваетесь... вам действительно нужно добавить еще один слой поверх того, что у вас есть, чтобы вы могли ссылаться my_dict
в вашем шаблоне
t.render(Context({'my_dict': {'boo': {'id':'42'}, 'hi': {'id':'42'}}}))