By default Flask renders empty values for undefined attributes in Jinja templates. I want to raise an error instead. How can I change this behavior in Flask?
Hello, {{ name }}!
render_template('index.html')
Hello, !
Jinja, also commonly referred to as "Jinja2" to specify the newest release version, is a Python template engine used to create HTML, XML or other markup formats that are returned to the user via an HTTP response.
Jinja is using Unicode internally which means that you have to pass Unicode objects to the render function or bytestrings that only consist of ASCII characters.
Change the Flask app's Jinja env's undefined
class to be StrictUndefined
.
from flask import Flask
from jinja2 import StrictUndefined
app = Flask(__name__)
app.jinja_env.undefined = StrictUndefined
If a template tries to use a variable that is undefined (except to test if it's undefined) it will raise an error.
Hello, {{ name }}!
render_template('index.html')
jinja2.exceptions.UndefinedError: 'name' is undefined
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With