如何以及在何处定义自定义 jinja2 测试

Sim*_*eth 1 filter jinja2 flask

我知道这对除了我之外的每个人都是显而易见的。

但是我在哪里以及如何定义自定义 jinja2 测试?

我尝试在我的烧瓶中指定:

import flask
import jinja2
from jinja2 import environment as env
from jinja2 import *

app = Flask(__name__)
app.config.from_object(__name__)
app = Flask(__name__)

# jinja2 filter
def isList(value):
  return isinstance(value, list)
env.tests['isList'] = isList
Run Code Online (Sandbox Code Playgroud)

由此产生的错误是:

AttributeError: 'module' object has no attribute 'tests'
Run Code Online (Sandbox Code Playgroud)

小智 5

为 Flask 应用程序配置的 Jinja2 环境是app.jinja_env. 如果您将代码中的最后一行更改为

app.jinja_env.tests['isList'] = isList
Run Code Online (Sandbox Code Playgroud)

它应该可以正常工作。