在Django模板中迭代dict时遇到问题

时间:2012-04-17 01:27:58

标签: python django dictionary django-templates

关于这一点似乎有一百万个问题(和答案),但它们都不适合我。

我有这样的事情:

test_dict = {'name':'Joe'}
return render_to_response('home.html',test_dict,context_instance=RequestContext(request))

在模板中,我正在尝试这样做:

{% for k,v in test_dict.items %}
  Hello {{ v }} <br />
{% endfor %}

但没有运气。另一方面,这有效:

Hello {{ name }}

(No for loop)。我一定错过了一些非常明显的东西吗?

修改
在回答第一个答案时,我也试过了:

test_dict = {'name':'Joe'}
data = {'test_dict':test_dict}

return render_to_response('home.html',data,context_instance=RequestContext(request))

在模板中:

{% block content %}
  {% for k, v in data.items %}
    Hello {{ v }} <br />
  {% endfor %}
{% endblock %}

仍然没有出现。

2 个答案:

答案 0 :(得分:2)

要做你想做的事,你会想要像

这样的东西
data = {'test_dict':test_dict}
return render_to_response('home.html',data,context_instance=RequestContext(request))

来自docs

  

要添加到模板上下文的值的字典。

因此,在您的示例中,test_dict被注入到模板上下文中。想想它的工作原理如下:

template = Template()
for k, v in dictionary.items():
    template[k] = v

因此test_dict没有注入到模板的上下文中,但是test_dict的键和值是。

答案 1 :(得分:0)

当:

test_dict = {'name':'Joe'}
data = {'test_dict':test_dict}

return render_to_response('home.html',data,context_instance=RequestContext(request))

使用:

{% for k, v in test_dict.items %}