在Flask中的Jinja模板中引发未定义属性的错误

est*_*evo 4 python jinja2 flask

默认情况下,Flask为Jinja模板中的未定义属性呈现空值.我想提出一个错误.如何在Flask中更改此行为?

Hello, {{ name }}!
Run Code Online (Sandbox Code Playgroud)
render_template('index.html')
Run Code Online (Sandbox Code Playgroud)
Hello, !
Run Code Online (Sandbox Code Playgroud)

est*_*evo 7

更改Flask应用程序的Jinja env的undefinedStrictUndefined.

from flask import Flask
from jinja2 import StrictUndefined

app = Flask(__name__)
app.jinja_env.undefined = StrictUndefined
Run Code Online (Sandbox Code Playgroud)

如果模板试图使用未定义的变量(除了测试它是否未定义),它将引发错误.

Hello, {{ name }}!
Run Code Online (Sandbox Code Playgroud)
render_template('index.html')
Run Code Online (Sandbox Code Playgroud)
jinja2.exceptions.UndefinedError: 'name' is undefined
Run Code Online (Sandbox Code Playgroud)

  • 对于那些直接使用 jinja(而不是通过 Flask)的人:您可以将 `StrictUndefined` 传递给 `Environment` 构造函数:`Environment(loader=..., autoescape=..., undefined=StrictUndefined)` (4认同)