对于Django模板中的循环不处理

时间:2018-02-22 22:04:55

标签: python django django-templates django-2.0

我创建了一个字典,并将其传递给我的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>

我在浏览器中的输出如下所示: 超出字典 字典后

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 个答案:

答案 0 :(得分:1)

首先,您需要创建一个Context对象并将其传递给render函数。请参阅documentation

中的此示例

其次,为了使您的代码按照我认为您的意图工作...您实际上需要在所拥有的内容之上添加另一个图层,以便您可以在模板中引用my_dict

t.render(Context({'my_dict': {'boo': {'id':'42'}, 'hi': {'id':'42'}}}))

答案 1 :(得分:1)

true

您的上下文有两个键,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 }}