在 Jinja 中使用 Python `set` 关键字

vla*_*lad 6 python jinja2

我想返回 Jinja 模板中的独特项目。简化:

{% set lst = [1, 2, 3, 3, 2] %}
{% for t in set(lst) %}
    {{ t }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

UndefinedError: 'set' is undefined
Run Code Online (Sandbox Code Playgroud)

而且似乎很难在 Google 上找到答案,这set也是 Jinja 关键字。那么我可以set在 Jinja 中使用 Python 的关键字,还是可以从 Jinja 的列表中返回唯一的项目?

iSc*_*E4m 0

set 的作用是创建一个变量,因此当您使用 时set lst = 1,您可以使用 访问它lst,而不是set(lst)

编辑:被误解的问题,要从 jinja 访问 python 函数,这就是我在我的 Flask 应用程序中所做的

@app.context_processor
def inject_python():
    return dict(set=set)
Run Code Online (Sandbox Code Playgroud)

这样jinja就有了这个功能,你就可以像以前一样使用了

  • 这与问题无关,因为OP打算获得一个唯一的列表,即一组。不是“jinja”特定关键字,而是普通的 Python 函数。 (2认同)