【发布时间】:2011-01-05 05:42:18
【问题描述】:
我的视图代码基本上是这样的:
context = Context()
context['my_dict'] = {'a': 4, 'b': 8, 'c': 15, 'd': 16, 'e': 23, 'f': 42 }
context['my_list'] = ['d', 'f', 'e', 'b', 'c', 'a']
我想在我的 Django 模板中做的是:
<ul>
{% for item in my_list %}
<li>{{ item }} : {{ my_dict.item }}</li>
{% endfor %}
</ul>
我希望这样输出:
<ul>
<li> d : 16 </li>
<li> f : 42 </li>
<li> e : 23 </li>
<li> b : 8 </li>
<li> c : 15 </li>
<li> a : 4 </li>
</ul>
但是通过{{ my_dict.item }} 通过变量名引用字典实际上并不起作用。我怀疑它在内部做my_dict['item'] 而不是my_dict[item]。有没有办法解决这个问题?
【问题讨论】:
-
当然,我总是可以在视图中添加更多代码来表示: context['my_derefernced'] = [ (v, context[my_dict][v]) for v in context['my_list' ] ] 但我宁愿不必这样做。字典可能非常大。
-
看看这个很棒的解决方案:stackoverflow.com/questions/35948/…
-
如果字典很大,为什么不使用生成器?也许是这样的:
context['my_dereferenced'] = ( (v, context[my_dict][v]) for v in context['my_list'] )
标签: python django django-templates