在我的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/