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

我怎么在Jinja做到这一点?

最佳答案

好吧,由于没有答案,我将根据建议发布解决方案。

首先,您必须将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] }}

关于python - 如何在Jinja中使用查找表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18670606/

10-11 20:13