我有一本具有许多特征的字典:
sort_options = SortedDict([
("importance" , ("Importance" , "warning-sign" , "importance")),
("effort" , ("Effort" , "wrench" , "effort")),
("time_estimate" , ("Time Estimate" , "time" , "time_estimate")),
])
我还有一个操作列表作为查询结果。每个动作都有这些属性;在我的模板中,我可以调用 {{ action.effort }} 或 {{ action.time_estimate }} 并获得结果。
我正在遍历我的 sort_options 以填充 twitter 引导图标:
{% for key, icon in sort_options.items %}
<i class="icon-{{ icon.1 }}"></i>
{% endfor %}
但我也想显示每个属性的动作值。本质上,类似:
{% for key, icon in sort_options.items %}
<i class="icon-{{ icon.1 }}"></i>
{{ action.key }}
{% endfor %}
关键将解析为“重要性”或“努力”。我知道这行不通。所以我试图利用这个问题中提出的解决方案。
该解决方案提出了一个模板过滤器:
def hash(h,key):
if key in h:
return h[key]
else:
return None
register.filter(hash)
{{ user|hash:item }}
问题使用了一个看起来像这样的字典:
{'item1': 3, 'name': 'username', 'item2': 4}
我尝试了以下方法:
{% for key, icon in sort_options.items %}
<i class="icon-{{ icon.1 }}"></i>
{{ action|hash:key }}
{% endfor %}
但出现错误:
Caught TypeError while rendering: argument of type 'Action' is not iterable
我相信这是因为模板过滤器只获取对象的一个属性(可能是名称),而不是整个字典:
[<Action: Action_one>, <Action: Task_two>...]
有没有办法强制模板将完整对象传递给模板标签?