Тест defined
Тест defined применяется к переменной в шаблоне Jinja
и возвращает true, если переменная определена,
и false, если переменная не определена.
Обычно используется в конструкции if, чтобы избежать
ошибок при обращении к несуществующим переменным.
Синтаксис
{% if variable is defined %}
...
{% endif %}
Пример
Давайте проверим, определена ли переменная name в шаблоне:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', name='abcde')
Шаблон:
{% if name is defined %}
<p>{{ name }}</p>
{% endif %}
Результат выполнения кода:
<p>abcde</p>
Пример
Давайте проверим переменную, которая не передана в шаблон:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
Шаблон:
{% if name is defined %}
<p>{{ name }}</p>
{% else %}
<p>undefined</p>
{% endif %}
Результат выполнения кода:
<p>undefined</p>
Пример
Давайте используем тест defined с фильтром default,
чтобы подставить значение по умолчанию:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
Шаблон:
<p>{{ name if name is defined else 'hello' }}</p>
Результат выполнения кода:
<p>hello</p>