如何在Jinja中使用查找表?

时间:2013-09-07 06:48:24

标签: python jinja2 lookup-tables

在我的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中它不起作用。

我怎样才能在金贾做到这一点?

1 个答案:

答案 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] }}