Jinja: 上下文作为数组

1 投票
1 回答
742 浏览
提问于 2025-04-18 03:06

Jinja2的上下文只能是字典吗?很多时候我没有像 {'something': [1, 2, 3]} 这样的字典,而只是简单的 [1, 2, 3] 列表。

我是不是必须把这个列表放进一个字典里才能循环遍历它呢?

补充:如果有人觉得有用,我最后把所有的上下文传给了下面的函数,这样就能保持字典不变,同时把列表包装成 {'this': [MY_ARRAY]} 这样的结构。

def checked_context(ctx):
    return ctx if isinstance(ctx, dict) else {'this': ctx}

基本上,你可以像往常一样使用字典,并且可以通过 this 来访问列表,就像下面这个例子处理简单列表 [1, 2, 3] 一样:

{% for number in this %}
    {{ number }}
{% endfor %}

1 个回答

2

Jinja的上下文其实就是一个命名空间; 所以没错,你必须使用字典,不然你在模板中就无法用名字来引用这些值。

撰写回答