在 Django 模板中迭代 dict 时遇到问题
Posted
技术标签:
【中文标题】在 Django 模板中迭代 dict 时遇到问题【英文标题】:Having problems iterating over dict in Django template 【发布时间】:2012-04-28 08:38:33 【问题描述】:似乎有一百万个关于此的问题(和答案),但没有一个对我有用。
我有这样的东西:
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
(没有 for 循环)。我一定遗漏了一些非常明显的东西?
编辑 针对第一个答案,我也试过这个:
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 %
仍然没有任何显示。
【问题讨论】:
【参考方案1】:时间:
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 %
【讨论】:
【参考方案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 的键和值。
【讨论】:
感谢您的及时回复。不过,它仍然没有为我显示任何数据: test_dict = 'name':'Joe' data = 'test_dict':test_dict return render_to_response('ga_home.html',data,context_instance=RequestContext(request))以上是关于在 Django 模板中迭代 dict 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
在Django中template遇到 "context must be a dict rather