1

在我的 Jinja 模板中,我有一个像这样的元组列表:

{% set typeLabels = [
    ('type1', 'Label for type 1'),
    ('type2', 'Label for type 2'),
    ('type3', 'Label for type 3')
] %}

我使用 alist而不是 adict因为顺序很重要(我也在其他地方使用列表来生成列表框)。

然后我需要像这样进行查找:

{{ dict(typeLabels)[someType] }}

如果您在 Python 中执行此操作,它可以正常工作,但在 Jinja 中它不起作用。

我怎么能在 Jinja 做到这一点?

4

1 回答 1

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] }}
于 2013-09-10T21:33:43.227 回答