在我的Jinja模板中,我有一个像这样的元组列表:
{% set typeLabels = [
('type1', 'Label for type 1'),
('type2', 'Label for type 2'),
('type3', 'Label for type 3')
] %}
我使用的是list
而不是dict
,因为订单很重要(我也会在别处使用该列表来生成列表框)。
然后我需要像这样查找:
{{ dict(typeLabels)[someType] }}
如果你在Python中使用它可以正常工作,但在Jinja中它不起作用。
我怎样才能在金贾做到这一点?
答案 0 :(得分:3)
好吧,既然没有答案,我会根据建议发布我的解决方案。
首先你必须将collections.OrderedDict
添加到Jinja环境,因为Jinja不知道它:
JINJA_ENV = jinja2.Environment( . . . )
JINJA_ENV.globals['OrderedDict'] = collections.OrderedDict
然后在模板中:
{% set typeLabels = OrderedDict([
('type1', 'Label for type 1'),
('type2', 'Label for type 2'),
('type3', 'Label for type 3')
]) %}
现在您可以正常访问字典:
{{ typeLabels[someType] }}